Einzelnen Beitrag anzeigen

fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#1

Exe verändern, mal wieder

  Alt 24. Mär 2008, 15:24
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 | ?
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat