![]() |
Größe von Kommandozeilen Programm (EXE) reduzieren...
Hallo!
Ich habe ein kleines Kommandozeilenprogramm geschrieben. Das Programm macht nicht viel außer ein paar werte zu addieren und ggf. eine Meldung anzuzeigen. Trotzdem ist die EXE stolze 407 KB groß. Für nicht mal 70 Zeilen Code ist das ne Menge. Es werden keine Units eingebunden, die nicht gebraucht werden, wie kommt also die Größe zustande? Gibt es ein paar "Tricks" mit denen man die Größe reduzieren kann? Ich meine mit Delphi und nicht mit einem EXE-Kompressor wie z.B. UPX. Besten Dank Ares |
Re: Größe von Kommandozeilen Programm (EXE) reduzieren...
Die einzige Möglichkeit wäre es in NonVCL zu programmieren, hierzu gibt es ein sehr gutes Tutorial von Luckie.
Bist du sicher, dass du alle Units brauchst ? Sieht mir sehr dnach aus, als wäre die Unit Forms eingebunden, auf die man bei einem Consolen-Programm ja in der Regel vertichten kann. Gruß |
Re: Größe von Kommandozeilen Programm (EXE) reduzieren...
Irgendwie ist die Frage im falschen Forum gelandet. Vielleicht kann Sie jemand verschieben...?
Ok, zur Frage: Ich verwende folgende Units: SysUtils, ShellAPI, Dialogs, IdGlobal, Windows; Und nur diese. Ich werde mir das NonVCL Tutorial mal ansehen. |
Re: Größe von Kommandozeilen Programm (EXE) reduzieren...
SysUtils ist schon recht groß, und wenn ich mich nict täusche bindet Dialogs (wozu brauchst Du die bei einem Kommandozeilentool?) die Unit Windows ein, wo auch alle Forms sind. Die ist auch relativ groß.
|
Re: Größe von Kommandozeilen Programm (EXE) reduzieren...
Hallo,
Dialogs muss raus, für Anzeigen nimmst du dann MessageBox aus Windows. In Windows ist kein Forms, nur die ganzen Windows-Konstanten, Records ... die schmeisst der Linker aber wieder raus, wenn sie nicht verwendet werden. Heiko |
Re: Größe von Kommandozeilen Programm (EXE) reduzieren...
SysUtils, Dialogs, IdGlobal => Raus damit, um in nonVCL zu arbeiten brauchst du eigentlich nur Windows, Messages, und vielleicht ShellApi und WinSock.
|
Re: Größe von Kommandozeilen Programm (EXE) reduzieren...
Da dies ein Kommandozeilenprogramm ist, braucht es die VCL nicht. Dialogs zieht aber ueber Forms indirekt die ganze VCL rein.
SysUtils fabriziert nur ca. 40 K Extracode. Ob ShellApi oder IdGlobal auch die VCL reinziehen weiss ich gerade nicht. |
Re: Größe von Kommandozeilen Programm (EXE) reduzieren...
SysUtils saugt keine VCL rein ... die erstellt sich selber die nötigen Fenster,
allerdings wird in SysUtils alles für die ExceptionBehandlung geladen, also wenn man da was benötigt, dann ist die schon wichtig. Und was Dialogs angeht ... das wurde ja schon gesagt ... raus damit, das Zeugs darin sollte in Konsolenanwendungen ja eh nicht verwendet werden. Windows verursacht auch kaum Overhead und es bindet auch kaum andere Units mit ein (Constants und so'n Zeugs. ShellAPI und IdGlobal da mußt du schon selber wissen, ob's benötigt wird ^^ |
Re: Größe von Kommandozeilen Programm (EXE) reduzieren...
Zitat:
Reines nonVCL benutzt nur die System und SysInit sowie Win32-APIs. Strings, als Compiler-Magic, sind erlaubt. |
Re: Größe von Kommandozeilen Programm (EXE) reduzieren...
SysUtils bringt wie gesagt ca 40 K ueber seine initialization section ein. Reine Header-Units wie Windows bringen selbst gar keinen Code ein.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 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