Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dateien in EXE speichern (https://www.delphipraxis.net/135044-dateien-exe-speichern.html)

DArc 3. Jun 2009 17:57


Dateien in EXE speichern
 
habe noch ne frage ^^

ich möchte wissen, ob ich dateien, zB andere EXE dateien in meinem delphiprojekt
speichern kann, OHNE eine externe *.RES nehmen zu müssen ...

also so ungefähr, wie bei dem programm installshield!

man packt mehrere dateien in eine exe und diese wiederum extrahiert mehrere
dateien (exe, jpg, dll, usw., was man eben so braucht) ...

kann man auch sowas in delphi coden?

wie gesagt, ich will keine externe *.res!



hmmm oder ... könnte man mit einem befehl *.res dateien in irgendeinem
ausgewählten dateipfad extrahieren? also ich meine die res wieder "auseinander nehmen"
und die dateien, die man in die res gepackt hat wieder rausnehmen?
dann würde ich die externe RES nehmen^^

jaenicke 3. Jun 2009 18:00

Re: Dateien in EXE speichern
 
Wieso externe .res? Die Ressourcendatei wird doch beim Kompilieren in deine Exe eingefügt. :gruebel:

DArc 3. Jun 2009 18:05

Re: Dateien in EXE speichern
 
lol echt?

habe ich garnicht bemerkt xD ...

haha bin ich blöde ...


thx^^



wieder was dazu gelernt^^


edit: zu meiner zweiten frage:

wie kann ich nun die dateien aus der *.res wieder rausholen oder geht das überhaupt?

nat 3. Jun 2009 18:09

Re: Dateien in EXE speichern
 
du könntest die dateien hinten an die exe-datei anhängen.
die exe sollte trotzdem lauffähig sein und kann zur laufzeit aus
sich selber die dateien auslesen. du müsstest nur mit speichern
wie groß die angehängte datei (oder wenn mehrere, wie groß jede
einzelne datei) ist, damit du sie auch wieder auslesen kannst.
so machen es meines wissen auch die selbstentpackenden
zip/rar/etc archive.

DArc 3. Jun 2009 18:11

Re: Dateien in EXE speichern
 
Zitat:

Zitat von nat
du könntest die dateien hinten an die exe-datei anhängen.
die exe sollte trotzdem lauffähig sein und kann zur laufzeit aus
sich selber die dateien auslesen. du müsstest nur mit speichern
wie groß die angehängte datei (oder wenn mehrere, wie groß jede
einzelne datei) ist, damit du sie auch wieder auslesen kannst.
so machen es meines wissen auch die selbstentpackenden
zip/rar/etc archive.

und wie mach ich das ...
tut mir leid für mein zu kleines delphi - wissen^^

nat 3. Jun 2009 18:22

Re: Dateien in EXE speichern
 
du liest die datei die du anhängen willst erstma in einen buffer ein z.B. so
Delphi-Quellcode:
var
  FS: TFileStream;
  Buffer: array of char;
begin
  FS := TFileStream.Create('DateiDieIchAnhängenWill.exe', fmOpenRead);
  try
    setlength(Buffer, FS.size);
    FS.ReadBuffer(Buffer[0], FS.size);
    //die komplette datei ist nun binär in Buffer
    ...
  finally
    FS.free;
  end;
dann öffnest du die datei an die du anhängen willst (z.B. auch so wie oben mit nem TFileStream),
und schreibst ganz ans ende den buffer und (ganz wichtig) dahinter die größe des buffers (length(Buffer)).

das programm, an das du anhängst muß natürlich die funktionen schon beinhalten um von sich
selbst erst die größe auszulesen und dann den eigentlichen "buffer". diesen kannst du dann
wieder in eine datei auf der festplatte schreiben und dann ausführen oder was auch immer.

klingt etwas kompliziert, aber wenn man da erstma durchblickt ist es ganz einfach.

jaenicke 3. Jun 2009 18:37

Re: Dateien in EXE speichern
 
Für das Anhängen habe ich hier eine einfach zu benutzende Möglichkeit gepostet:
http://www.delphipraxis.net/internal....php?p=1043105

Aber wenn du nur Dateien mit der Exe mitliefern willst, ist das ein äußerst unpassender Weg. Da sind Ressourcen genau richtig:
Zitat:

Zitat von DArc
wie kann ich nun die dateien aus der *.res wieder rausholen oder geht das überhaupt?

Dafür kannst du TResourceStream benutzen. Dann hast du direkten Zugriff auf die Daten der Ressource.

nat 3. Jun 2009 18:53

Re: Dateien in EXE speichern
 
Zitat:

Zitat von jaenicke
Aber wenn du nur Dateien mit der Exe mitliefern willst, ist das ein äußerst unpassender Weg. Da sind Ressourcen genau richtig

kommt halt immer auf den anwendungsfall an. wenn du ne feste datei in dein programm kompilieren willst sind ressourcen sicher besser.
soll dein programm aber viele verschiedene dateien angehängt bekommen (wie z.B. bei den schon angesprochenen selbstentpackenden archiven),
dann kannste da nich viel mit ressourcen machen.
kommt halt immer drauf an... wollte ja nur noch eine möglichkeit nennen... weiß ja nicht wozu er es genau verwenden will

jaenicke 3. Jun 2009 18:58

Re: Dateien in EXE speichern
 
Ja, natürlich, deshalb habe ich das ja auch entsprechend eingeschränkt. "Wenn man nur etwas mitliefern will"
Denn so hörte es sich an nach dem Eingangspost. ;-)
Zitat:

Zitat von DArc
man packt mehrere dateien in eine exe und diese wiederum extrahiert mehrere
dateien (exe, jpg, dll, usw., was man eben so braucht) ...


nat 3. Jun 2009 19:06

Re: Dateien in EXE speichern
 
naja, ich war mir da nich so sicher. hatte in nem anderen thread von ihm was von "setup" gelesen.
da dachte ich, vll bastelt er ja an ner setup engine oder sowas.
deshalb wollt ich meinen senf halt auch dazu geben! ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz