tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Taktaky
ERLEDIGT
JA
ANTWORTEN
11
ZUGRIFFE
5519
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Agent159 Agent159 ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    41
    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
     

  2. #2
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    Was meinst Du mit extrahieren?

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

    vop
     

  3. #3
    Agent159 Agent159 ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    41
    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,...
     

  4. #4
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    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
     

  5. #5
    Agent159 Agent159 ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    41
    Ja genau, das will ich
     

  6. #6
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    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
     

  7. #7
    Narrator Tutorials.de Gastzugang
    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.
     

  8. #8
    Agent159 Agent159 ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    41
    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
     

  9. #9
    Taktaky Taktaky ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    10
    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ß
    Agent159 bedankt sich. 

  10. #10
    Agent159 Agent159 ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    41
    Klar, keine Ursache. (Entschuldige das ich nicht sofort antworten konnte...)

    Erstelle zuerst eine Resource-Datei: *resource.rc*
    Code :
    1
    2
    3
    
    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 :
    1
    2
    3
    4
    5
    
    var ResStream: TResourceStream;
     
    ResStream := TResourceStream.CreateFromID(HInstance, [b]105[/b], RT_RCDATA);
    ResStream.SaveToFile('[b]C:\NAME.EXT[/b]');
    ResStream.Free;
    Die dick geschriebenen Parameter müssen dann angepasst werden.

    Viel Spaß
     

  11. #11
    Taktaky Taktaky ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    10
    Es wäre nett, wenn Du mir das ganze per email oder hier schreibst
    Ich bin kein Delphi profi

    Gruß
     

  12. #12
    Agent159 Agent159 ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    41
    Ich habe das ganze doch hier schon erklärt?!
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 12.09.08, 14:08
  2. Antworten: 2
    Letzter Beitrag: 12.02.08, 18:21
  3. Antworten: 2
    Letzter Beitrag: 27.04.07, 08:16
  4. Aus Datei lesen und in eine andere Datei schreiben
    Von Computerpinguin im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 03.05.05, 14:29
  5. Antworten: 4
    Letzter Beitrag: 25.04.05, 22:15