Exe-Datei schreiben

Agent159

Mitglied
Ich hab ma ne Frage.
Wie kann ich aus meinem Programm ein anderes extrahieren.
Also neu erstellen. Das Programm soll in Delphi schon vor dem Compilieren eingefügt werden.
Wäre nett wenn mir das jemand sagen könnte.
Danke
 
  • Gefällt mir
Reaktionen: vop
Was meinst Du mit extrahieren?

Was soll in Delphi eingefügt werden, der Quellcode?

vop
 
Ja, so in etwa.
Ich wollte eine andere Datei mit in meine EXE-Datei packen.
Wenn man dann auf nen Button oder so klickt, soll diese extrahiert werden.
Das muss ja auch nicht nur mit anderen exe-Dateien gehen, vieleicht auch txt,...
 
Du möchtest also binäre Daten derart in dein Programm integrieren, dass diese später auf Knopfdruck in eine Datei geschrieben werden können?

So etwa wie ein selbstextrahierendes Archiv, wo die Daten sozusagen von einem Programm zum auspacken umschlossen sind?

vop
 
Hmm.

Du müßtest vielleicht ein anderes Programm B schreiben, welches Dir den Quellcode für das gewünschte Programm A nach Angabe der gewünschten Datei generiert.

Der Quellcode deines Programms A könnte dann ein z.B. Schreibroutinen verwenden, die genau die gewünschten Bytes speichern, also z.B. Folge von Write()-Anweisungen.
Bspw.
...
DATENBLOCK:='Dieser Text wird von Programm B generiert und kann auch binär sein';
Write(F,DATENBLOCK);
DATENBLOCK:='Dieser Text wird von Programm B generiert und kann auch binär sein';
Write(F,DATENBLOCK);
DATENBLOCK:='Dieser Text wird von Programm B generiert und kann auch binär sein';
Write(F,DATENBLOCK);
...
Nachdem Du mit Programm B den Quellcode für Programm A erzeugt hast, kannst Du Programm A compilieren.

Das ganz kann man dann natürlich mit entsprechendem Aufwand auch automatisieren.

vop
 
:suspekt: viel zu kompliziert und auch seltsam programmiert.
Schau unter dem Stichwort Ressourcen. Damit kann man mit Windowsmitteln sämtliche Dateien in exe und dll-Files speichern.
So werden z.b auch verschiedene icons, etc gespeichert.
Damit kann man das machen. Wie weiß ich nich. Brauch ich auch nich :) Viel Spaß beim raussuchen.
 
Hab das Problem selber gelöst:
Ne rc-datei gemacht und dann in das prject eingefügt
Bei klick auf button -> extrahiere per FileStream..
Danke für eure hilfe ;-) :) :)
 
Hallo Agent159,

kannst du mir sagen, wie das Problem gelöst hast ? :)

Das interessiert mich auch.

Ich möchte ein Programm programmieren, dass es Dateien wie texte html, Bilder, ... zu exe packt (Selbst extrahiertes exe) d.h. wenn ich die exe ausführe wird automatisch irgendwo selbst extrahiert und danach startet.

Gruß
 
Klar, keine Ursache. (Entschuldige das ich nicht sofort antworten konnte...)

Erstelle zuerst eine Resource-Datei: *resource.rc*
Code:
105 RCDATA "NAME.EXT"
106 RCDATA "NAME2.EXT"
[...]

Diese musst du in der IDE dem aktuellen Projekt hinzufügen.

Der Source zum extrahieren & speichern der Daten:
Code:
var ResStream: TResourceStream;

ResStream := TResourceStream.CreateFromID(HInstance, 105, RT_RCDATA);
ResStream.SaveToFile('C:\NAME.EXT');
ResStream.Free;
Die dick geschriebenen Parameter müssen dann angepasst werden.

Viel Spaß :)
 

Neue Beiträge

Zurück