Du kannst auch einen String an die EXE anhängen und diesen dann auslesen. Das funktioniert dann auch unter Windows 98, ist sicher nicht so professionell wie updateresource.
Folgenden Code fügst du in das zu patchende Programm ein. Er liest den String am Dateiende der eigenen Datei aus.
Delphi-Quellcode:
Type TText= record
Text1, Text2, Text3: array[0..99] of Char;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
FileStream: TFileStream;
Text: TText;
begin
FileStream:= TFileStream.Create(application.ExeName, fmOpenRead);
try
FileStream.Position:= FileStream.Size- SizeOf(Text);
if FileStream.Read(Text, SizeOf(Text))= SizeOf(Text) then
Edit1.Text:= String(Text.Text2);
finally
FileStream.Free;
end;
end;
Und diesen Code fügst du in das Programm ein, welches die andere Datei patcht.
Delphi-Quellcode:
Type TText= record
Text1, Text2, Text3: array[0..99] of Char;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
FileStream: TFileStream;
Text: TText;
Pfad: AnsiString;
begin
Pfad:= 'C:\Project1.exe';
ZeroMemory(@Text, SizeOf(Text));
StrCopy(Text.Text2, PChar(Edit1.Text));
if FileExists(Pfad) then
begin
FileStream:= TFileStream.Create(Pfad, fmOpenReadWrite);
try
FileStream.Position:= FileStream.Size;
if FileStream.Write(Text, SizeOf(Text))= SizeOf(Text) then
Showmessage('fertig');
finally
FileStream.Free;
end
end;
end;
EDIT: Code geändert, man kann jetzt mehrere Strings mittels Record in an die EXE anhängen und auslesen.