Hola.
Si te entendí bién, supongo que este ejemplo te servirá de guía:
Código Delphi
[-]
...
implementation
const
FNAME = 'C:\Temp\notepad.exe';
var
OriginalString: string;
function ChangeChain(AFileName, Chain: string): string;
var
Stream: TFileStream;
sz : Integer;
begin
sz := Length(Chain);
SetLength(Result, sz);
Stream := TFileStream.Create(AFileName, fmOpenRead);
try
Stream.Position := 0;
Stream.Read(Pointer(Result)^, sz);
finally
Stream.Free;
end;
Stream := TFileStream.Create(AFileName, fmOpenWrite);
try
Stream.Position := 0;
Stream.Write(Pointer(Chain)^, sz);
finally
Stream.Free;
end;
end;
procedure TForm1.btChangeClick(Sender: TObject);
begin
OriginalString := ChangeChain(FNAME,
'012345678901234567890123456789012345678901234567890123456789'+ '012345678901234567890123456789012345678901234567890123456789');
end;
procedure TForm1.btRestoreClick(Sender: TObject);
begin
ChangeChain(FNAME, OriginalString);
end;
end.
Para que sea mas funcional, a diferencia del ejemplo, deberías almacenar la cadena que corrompe el archivo en un medio perdurable, de modo que puedas recuperarla luego.
Saludos