Buna, am si eu nevoie de cateva sfaturi mai explicite daca se poate
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=$:P
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!
