![]() |
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^^ |
Re: Dateien in EXE speichern
Wieso externe .res? Die Ressourcendatei wird doch beim Kompilieren in deine Exe eingefügt. :gruebel:
|
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? |
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. |
Re: Dateien in EXE speichern
Zitat:
tut mir leid für mein zu kleines delphi - wissen^^ |
Re: Dateien in EXE speichern
du liest die datei die du anhängen willst erstma in einen buffer ein z.B. so
Delphi-Quellcode:
dann öffnest du die datei an die du anhängen willst (z.B. auch so wie oben mit nem TFileStream),
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; 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. |
Re: Dateien in EXE speichern
Für das Anhängen habe ich hier eine einfach zu benutzende Möglichkeit gepostet:
![]() Aber wenn du nur Dateien mit der Exe mitliefern willst, ist das ein äußerst unpassender Weg. Da sind Ressourcen genau richtig: Zitat:
|
Re: Dateien in EXE speichern
Zitat:
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 |
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:
|
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 14:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz