Deci....vreai sa fac un soft care deschide un fisier il transforma in hex si returneaza anumite valori de la anumita adresa, ex:
adr 0 1 2 3 4 5 6 7 8 9 A B C D E F
0000 A1
0001
0002
0003 C2
......
000A
Deci sa zicem ca acesta e fisierul deja transformat in hex si eu am nevoie de valoarea de la adresa 00032 care este C2, sau C si 2.
Astea am reusit sa fac...DAR.... trebuie sa mai simpific codul, pentru a adauga mai multe conditii
procedure tform1.test;
type
TFileStructure = Array[0..15] of Byte;
var
fname:string;
F: File of TFileStructure;
Data: Array of TFileStructure;
FSize, I: Integer;
x,y,z,w,ctr1,stat:byte;
a,b,c,d,ctr2,ctr1a,ctr1b,status,stats,status2:string;
a1,b1,c1,d1,a2,b2,c2,d2:string;
begin
if OpenDialog1.Execute then
begin
try
Screen.Cursor := crHourglass;
fname := ExtractFileName(OpenDialog1.Filename);
edit1.Text:=fname;
Application.ProcessMessages;
try
Assignfile(F,(OpenDialog1.Filename));
except on E:EFOpenError do
begin
MessageDlg(Format('Can''t open file %s.',[fname]),mtError,[mbOk],0);
end;
end;
finally
Screen.Cursor := crDefault;
begin
end;
Reset(F);
FSize:=FileSize(F);
SetLength(Data,FSize);
For I := 0 to FSize-1 do
Read(F,Data[I]);
CloseFile(F);
If FSize =$8 then
Begin
stat:=data[$0FE,15];
ctr1:=data[$0FE,14];
x:=data[$05,9];
y:=data[$05,10];
z:=data[$05,11];
w:=data[$05,12];
ctr2:=bytetohex(ctr1);
stats:=bytetohex(stat);
a:=bytetohex(x);
b:=bytetohex(y);
c:=bytetohex(z);
d:=bytetohex(w);
status:=inttohex(stat shr 4,1);
ctr1a:=inttohex(ctr1 shr 4,1);
ctr1b:=inttostr(ctr1 shr 15);
a1:=inttohex(x shr 4,1);
a2:=inttohex(x and 15,1);
b1:=inttohex(y shr 4,1);
b2:=inttohex(y and 15,1);
c1:=inttohex(z shr 4,1);
c2:=inttohex(z and 15,1);
d1:=inttohex(w shr 4,1);
d2:=inttohex(w and 15,1);
if status=('1') then status2:=('Enabled') ;
if status=('2') then status2:=('Disabled');
Memo1.Text:=('');
Memo1.lines.add('Found................24C01(128 byte)');
sleep(300);
Memo1.lines.add('Radio type......................Unknown');
sleep(300);
Memo1.lines.add('Counter status................Unknown');
Sleep(300);
Memo1.lines.add('Code status ...................Unknown');
sleep(300);
Memo1.lines.add('Code OK ..............................'+ a2+b1+c2+d1);
end;deci conditile ar fi (if fsize=$
dar eu trebuie sa mai adaug inca cateva conditii care sa depinda una de alta(daca A=1 si b=3 si d=\=20 atunci sa ruleze ce urmeaza.) apoi sa scriu alt sir de conditii care sa returneza alte valori de la alte adrese ori de la acel fisier sau de la altul , cum as putea rezolva??
Sper ca am explicat cat de cat pe intelesul tuturor problema mea.
VA multumesc!
Contact
Facebook
Twitter
RSS















