[DELPHI] Größe der EXE Datei verringern

deadzoneman

Lt. Junior Grade
Registriert
Jan. 2003
Beiträge
347
hi, meine .exe datei ist inzwischen 3MB groß, und hat geradeeinmal den bruchteil des quellcodes der eigentlich noch kommen soll. nun würd ich die ganz gerne verkleiner, hab nämlich eh noch keine andere datei für das prog bis auf eine .hlp und eine .ini datei. wie kann ich denn den quellcode auf andere dateien aufteilen, sodass am ende die exe-datei kleiner wird?
 
Die Datei ist gerade mal 3MB .
das ist doch nicht viel!!!!
Ich glaube, dass so etwas (eine exe datei zu teilen) nicht geht!
 
Du kannst z.B. Code in DLLs auslagern. Oder was auf jeden Fall immer geht ist ein Packertool für Win32/PE. Würde da UPX empfehlen. -> http://upx.sourceforge.net/

Außerdem solltest du möglichst nicht benötigte Units aus der Uses-Zeile entfernen. Richtig klein wird die EXE bei Delphi nur wenn du die Forms selbst programmierst/zur Laufzeit erstellst (also auf die VCL verzichten).
 
Kolbenhage schrieb:
Die Datei ist gerade mal 3MB .
das ist doch nicht viel!!!!
Ich glaube, dass so etwas (eine exe datei zu teilen) nicht geht!

Viel ist relativ! Eine Möglichkeit wäre danach zu suchen was dein Programm so groß macht, mir fallen da spontan Bilder und VCL Komponenten ein die du verringern oder dir sparen kannst / solltest. Nach dem compilen gibt es noch eine weitere effektive Methode. UPX

mfg
 
Kolbenhage schrieb:
Die Datei ist gerade mal 3MB .
das ist doch nicht viel!!!!
Ich glaube, dass so etwas (eine exe datei zu teilen) nicht geht!
Doch 3MB sind viel für ne Exe. Liegt daran dass es teilweise unnütze VCLs reinpackt. Da gibbet wie oben schon gesagt nur 3 Lösungen:

1. auf VCL verzichten
2. die VCLs auslagern
3. per Exe-Packer (UPX) packen

Delphi iss dafür bekannt, dass die Exe's ziemlich groß werden. Wenn du kleinere haben willst, nimm C++ oder progge nonVCL :)
 
Naja, 3 MB ist schon extrem fett. Hast Du da viele Grafiken drin und so? Dann ist es kein Wunder. Units aus der Uses-Klausel entfernen brauchst Du nicht, das macht der Linker automatisch für Dich.

Für eine Release-Version kannst Du in den Compiler-Optionen (Projekt->Optionen->Compiler) folgende Punkt umstellen, die die Exe kleiner machen. Zum Testen und debuggen ist das aber extrem ungeeignet.

Optimierung an
Stackframes aus
Bereichsprüfung aus
Überlaufprüfung aus
Debug-Informationen aus

Zum Debuggen solltest Du das genau andersrum einstellen. Die anderen Optionen einfach so lassen.


Auf die VCL zu verzichten ist keine akzeptable Alternative, finde ich.
 
Iss nich ganz richtig. Wenn du zb. n paar Units per VCL eingebunden hast und die VCL wieder löschst, dann bleiben die Units trotzdem drin. Das einzige was der Compiler macht iss die Units hinzufügen, entfernen tut er sie nich...
 
Nein, ist schon richtig. Ich hab extra Linker geschrieben, nicht Compiler ;) Der Linker fügt die .dcu's zu einer Exe zusammen, schreibt den Exe-Header usw. Tote Codestücke schmeißt er dabei raus.
 
boah, das ging aber diesmal wirklich fix. thx erstmal und werde mir morgen erstmal die zeit nehmen, bzw. heute noch, mal die verschiedenen ideen umzusetzen.
aso, grafiken sind eigentlich nicht viele bei, nur 2 etwas größere (vielleicht 250x150 pixel)
 
Naja, bei 24 Bit Farbtiefe machen die beiden Grafiken schonmal 220 KB aus. Das ist immerhin ein wenig.
Quellcode macht eigentlich nicht soo wahnsinnig viel aus. Kannst Du ein bisschen was über deine Anwendung sagen? Also was ist es, was hast du alles so drin und so.
 
Für alle, die UPX nicht mögen (weil nur Cosole...): http://www.shadoware.de/files/programs/pax2.zip

Dabei handelt es sich um ein (etwas veraltetes) Frontend für UPX, das damals von Shadoware.de entwickelt wurde.
Geschrieben in VB.

Ich benutze das eigentlich für jedes meiner Programme, man kann, je nach Programm, eine ganze Menge Platz gut machen damit!

Das Tool verwendet UPX 1.2, aktuell ist 1.24 bzw. die unstable 1.90. Geht aber noch.

Greets - SK

P.S: Bilder einfach mal unkompliziert durch den IrfanView jagen und einfach kleiner machen (z.B. .jpg anstatt .bmp)
 
Zurück
Oben