Hi,
ich möchte auch mal eine exe (die von mir selbst stammt) verändern. Habe die SuFu benutzt, aber nichts eindeutiges gefunden. Das Problem ist also folgendes:
Ein Hauptprogramm kann viele kleine unterexes erstellen. Dies tue ich über die
altbekannte FileSteam-Methode - die Datei ist in einer anderen Datei drin und wird dann immer, wenn ein Icon erstellt werden soll, rauskompiliert. Jetzt ist aber das Problem, dass diese Exedateien sich immer Minimal unterscheiden sollen - und zwar in einer einzigen globalen Konstante, die dazu dient, die kleine Exe mit einer Nummer zu identifizieren. In dieser Konstante soll dann also einfach 1,2,3,4,5 etc stehen, nach der Wahl des Users in einem Editfeld. Da diese kleinen Exedateien jetzt aber unbegrenzt oft erzeugt werden können sollen, ist es eine extrem schlechte Lösung, da in die Datei 10000 kleine Dateien reinzupacken, die jeweils sich nur um diese eine Konstante unterscheiden. Also Frage ich mich: Wie kann ich sie immer entsprechend verändern - geht das vielleicht direkt beim herauskompilieren? Habe bisher folgenden Schnipsel gefunden, der aber leider nicht funktioniert, es kommt zwar FERTIG aber die datei pomg.exe zeigt in der Message (die der Kosntante entspricht) weiterhin OMG an:
Delphi-Quellcode:
type
TText= record
Text1, Text2: string[200];//Beispiel
end;
procedure TForm1.Button1Click(Sender: TObject);
var
FileStream: TFileStream;
Text: TText;
Pfad: AnsiString;
begin
Pfad:= 'C:\pomg.exe';
ZeroMemory(@Text, SizeOf(Text));
if FileExists(Pfad) then
begin
FileStream:= TFileStream.Create(Pfad, fmOpenReadWrite);
try
FileStream.Position:= 23;//Beispiel Leseposition
FileStream.Read(Text, SizeOf(Text));
Text.Text1 := ' Message:String=''OMFG'''; //weiterverarbeiten
FileStream.Position:= 23;//Leseposition
if FileStream.Write(Text, SizeOf(Text))= SizeOf(Text) then
Showmessage('fertig');
finally
FileStream.Free;
end;
end;
end;
Das stammt aus einem Beispielprogrammlein, das ich gemacht hab. Zum Text will ich im Programm omg.exe einfahc die Konstante Message, die bisher OMG enthält, einfach in OMFG ändern. Sie befindet sich im Delphiprojekt in Zeile 23.
Message:String='OMG';
steht in der Zeile.
Wie krieg ich das vernünftig hin, oder fällt jemanden vielleicht noch eine bessere Methode ein?
mfg
fortuneNext
PS: Nebenfrage: Kann ich die Splitmethode eigentlich so modifizieren, dass die herausgeholte Datei trotzdem noch drin bleibt? Also nicht mehr | Datei3 =SPLIT= Datei1 + Datei2 | sondern | Datei3 =SPLIT= Datei3 + Datei2 | ?