La routine d'écriture :
procedure WriteHex(FilePath: String; Value: Byte);
Var
H: HFILE;
Tmp: Longword;
begin
H := CreateFile(PChar(FilePath), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
if H <> HFILE_ERROR then
begin
SetFilePointer(H, 0, nil, FILE_END);
WriteFile(H, Value, SizeOf(Byte), Tmp, nil);
CloseHandle(H);
end;
end;
_______________________________________________
La routine de lecture :
function ReadHex(FilePath: String; Pos: Longword): Byte;
Var
H: HFILE;
Tmp: Longword;
begin
Result := 0;
H := CreateFile(PChar(FilePath), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
if H <> HFILE_ERROR then
begin
SetFilePointer(H, Pos, nil, FILE_BEGIN);
ReadFile(H, Result, SizeOf(Byte), Tmp, nil);
CloseHandle(H);
end;
end;
_______________________________________________
La méthode pour le bouton :
procedure TForm1.Button1Click(Sender: TObject);
begin
{ MonFichier contient l'adresse sur disque de ton fichier }
WriteHex(MonFichier, StrToInt(Format('$%s', [Edit1.Text])));
end;
_______________________________________________
Pas de gestion d'erreurs concernant le TEdit (si tu entres des valeurs correctes, comme AB, E3, F9, tout va bien, mais si tu entres 'KHFJHFK' il y aura une exception).
Pour lire une valeur hexadécimale, il suffit d'utiliser la fonction ReadHex, en passant la position de la valeur que tu désires lire dans le paramètre Pos (0, première valeur / 1, 2eme valeur / 2, 3eme valeur ...)
Je n'ai pas testé, mais il me semble que cela devrait marcher.
Cordialement, Bacterius !
|