/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Grundlæggende hex i Delphi
Fra : ApoX


Dato : 28-07-01 10:35

Hvordan er det nu man bruger sine filbehandlingsfunktioner fuldt ud ? Jeg
har brug for at gå ind og læse en adresse, fx 0x00000022 i en fil og
derefter vise hvad den indeholder. Derudover har jeg også brug for at kunne
skrive til den adresse igen. Jeg har selvfølgelig godt et lille nys om
hvordan man gør det - noget med nogle normale assignfile, reset og seek, men
at omsætte det til praksis... kan jeg ikke hitte ud af - evt. et eksempel
hvis I er ekstra flinke

--
Thomas a.k.a.||ApoX||



 
 
Uffe Kousgaard (28-07-2001)
Kommentar
Fra : Uffe Kousgaard


Dato : 28-07-01 10:43

Frit fra leveren: Hvis position 22 indeholder et tegn, der er større end 10,
nulstilles tegnet i filen.

var
f: file of byte;
a: byte;
begin
filemode:= 0; // ikke strengt nødvendigt
assignfile(f,'test.bin');
reset(f);
seek(f,22);
read(f,a);
if a>10 then
begin
seek(f,22);
a:= 0;
write(f,a);
end;
closefile(f);
end;

"ApoX" <blomme@post.com> wrote in message
news:3b628662$0$51761$edfadb0f@dspool01.news.tele.dk...
> Hvordan er det nu man bruger sine filbehandlingsfunktioner fuldt ud ? Jeg
> har brug for at gå ind og læse en adresse, fx 0x00000022 i en fil og
> derefter vise hvad den indeholder. Derudover har jeg også brug for at
kunne
> skrive til den adresse igen. Jeg har selvfølgelig godt et lille nys om
> hvordan man gør det - noget med nogle normale assignfile, reset og seek,
men
> at omsætte det til praksis... kan jeg ikke hitte ud af - evt. et eksempel
> hvis I er ekstra flinke
>
> --
> Thomas a.k.a.||ApoX||
>
>



ApoX (28-07-2001)
Kommentar
Fra : ApoX


Dato : 28-07-01 14:29

> Frit fra leveren: Hvis position 22 indeholder et tegn, der er større end
10,
> nulstilles tegnet i filen.

[snip, eksemplet]

Ok. Mine forsøg med dine rutine gav følgende resultat:
Adressen 0x000000022 er i virkeligheden 34 når man bruger seek funktionen,
da seek funktionen åbenbart ikke regner med 16-tals-systemet. Når denne ting
er ændret kan jeg også fint finde ud af hvilke data, der er lokaliseret det
pågældne sted, men når jeg skal til at skrive, opstår det første problem;
den klager nemlig over at den ikke har permission til at skrive til filen.
Har prøvet alle kneb, men der er ingenting at gøre - sådan set filsystem er
altså bare ikke lige til at snøre. Da dette interesserer mig voldsomt, vil I
nok se flere spørgsmål regarderende subj., men lad da bare de første opstå
med det samme.

Hvordan kan jeg bruge hexadecimaltal når jeg bruger seek() og write() ?

Hvordan kan det lade sig gøre at vide hvilke værdier der gør hvad, som fx
hvis jeg gerne ville have et bogstav til at stå i min hex-editerede fil ?

--
Thomas a.k.a.||ApoX||



Uffe Kousgaard (28-07-2001)
Kommentar
Fra : Uffe Kousgaard


Dato : 28-07-01 14:51

I delphi skriver man $ foran tallet, hvis det er hexadecimalt - altså $FF =
255.

Altså seek(f,$22) flytter til den 34. position i filen.

Filemode skal være 2 for både at kunne læse og skrive - jeg huskede forkert
i første omgang.

Hvis der skal stå et bogstav, kan du f.eks. skrive:
a:= ord('A');
write(f,a);

"ApoX" <blomme@post.com> wrote in message
news:3b62bd39$0$51807$edfadb0f@dspool01.news.tele.dk...
> > Frit fra leveren: Hvis position 22 indeholder et tegn, der er større end
> 10,
> > nulstilles tegnet i filen.
>
> [snip, eksemplet]
>
> Ok. Mine forsøg med dine rutine gav følgende resultat:
> Adressen 0x000000022 er i virkeligheden 34 når man bruger seek funktionen,
> da seek funktionen åbenbart ikke regner med 16-tals-systemet. Når denne
ting
> er ændret kan jeg også fint finde ud af hvilke data, der er lokaliseret
det
> pågældne sted, men når jeg skal til at skrive, opstår det første problem;
> den klager nemlig over at den ikke har permission til at skrive til filen.
> Har prøvet alle kneb, men der er ingenting at gøre - sådan set filsystem
er
> altså bare ikke lige til at snøre. Da dette interesserer mig voldsomt, vil
I
> nok se flere spørgsmål regarderende subj., men lad da bare de første opstå
> med det samme.
>
> Hvordan kan jeg bruge hexadecimaltal når jeg bruger seek() og write() ?
>
> Hvordan kan det lade sig gøre at vide hvilke værdier der gør hvad, som fx
> hvis jeg gerne ville have et bogstav til at stå i min hex-editerede fil ?
>
> --
> Thomas a.k.a.||ApoX||
>
>



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste