Entwickler-Ecke

Sonstiges (Delphi) - Die Dateigröße der exe möglichst klein halten


com-chip - Fr 28.01.05 22:23
Titel: Dateigröße minimieren
Hallo!!

Ich bin übrigens neu, mein erster Beitrag :D

Kleine Frage. Weiter oben im Forum stand was von die exe Dateien auf unter 5KB reduzieren. Ja, ich habe erst einmal ein ganz anderes Problem. Das passt jetzt vielleicht nicht ganz zum Thema, gehört aber auch hier rein. Ich schreibe oft kleinere Anwendungen, wenige Tage, und nur wenige Funktionen. Das Problem ist das ich Delphi 7 Personal habe und wenn ich dann auf neu, Anwendung klicke, dann ist es egal wie viel Code ich da reinpinsle. Die Datei hat immer eine Größe von mind. 370 KB. Wenn ich diese auf meiner Homepage dann aber zum Download anbieten würde, dann wird man sich ja bestimmt nicht um z.B. nur eine Funktion zu errechnen so eine große Datei herrunter laden. Wie kriege ich die kleiner? ALlerdings möchte ich nicht nur mit Apis arbeiten. Kann ich die jetzt hinterher noch verkleinern obwohl ich das Programm schon fertig habe, also den Quellcode?? Brauche ich da einen bestimmten Compiler oder wie?? Ich verstehe das nicht. Kann mir da jemand helfen und sagen wie ichs so klein krieg??? Ich schätze man muss dann den Compiler nur irgendwie sagen das er bestimmte passagen nicht mit rein nehmen soll, also dann nur das wichtigste was auch wirklich gebraucht wird. Für eure Hilfe wäre ich sehr, sehr dankbar.

Viele Grüße

com-chip :idea:


Hack Gott - Fr 28.01.05 22:42
Titel: Größe
Es gibt solche Kompressoren für fertige Anwendungen, hab aber leider keinen. Ich würde WinRAR benutzen (geile Software). Das in einen WinRAR Ordner ziehen, den öffnen und auf THX (oder so...??) klicken und dann hasst du eine selbst-extrahierende exe anwendung.


Karlson - Fr 28.01.05 22:48

Du solltest du mal nach Suche in: Delphi-Forum, Delphi-Library NON-VCL Programmierung schauen.

Das Programm das Hack-Gott meint ist wahrscheinlich Suche bei Google A UPX-GUI


com-chip - Fr 28.01.05 22:49

So richtig verstehe ich aber nicht wie das geht. Ich habe mich mit dem Thema noch nicht weiter befasst. Und woher bekommt man nun solche Kompressoren?? Wird schwierig. Von WinRar hab ich schon mal was gehört. Wo bekomme ich denn das her?? Liegt das vielleicht irgendwo auf dem Rechner?? :shock:


Thunderous - Fr 28.01.05 22:51

Hi,

eine gute Möglichkeit kleine Exe'n zu erzeugen ist KOL http://bonanzas.rinet.ru/. Ist aber ein bissel umständlich in der Handhabung. Wenn du allerdings, so war es bei mir, vom Auftraggeber ein Größenlimit (max. 80kb) gesetzt bekommst ist das die Wahl.

Zweite Möglichkeit ist upx http://upx.sourceforge.net/, dieses komprimiert deine EXE oder DLL nachträglich. Wende ich fast immer an, auch im Zusammenhang mit "KOL"-Exen. Dabei wird leicht aus einer mit Grafiken vollgepackten 1.5MB Exe eine 600kb Exe. Oder aus deiner 370kb Exe eine ca. 150 kb Exe :)


com-chip - Fr 28.01.05 22:59

Ist ja cool! Ich wusste gar nicht das es da extra Programme gibt, danke im vorraus, ich schaue mir das dann mal an. Ich dachte da muss man irgendwie mit Compilerinformationen arbeiten damit er nicht alles in die Dateien, sondern nur das was wirklich gebraucht wird mit rein nimmt. OK, ich sag dann ob es funktioniert hat.


Hack Gott - Fr 28.01.05 23:00

Ich hab jetzt einen guten EXE-Kompressor gefunden http://upx.sourceforge.net/#download! Wenn du dort auf best einstellst (Komprimierrate: 8) dann müsste die datei gleich kleiner werden.


com-chip - Fr 28.01.05 23:02

Kleine Frage noch. Da sind ne ganze Menge Versionen zum Download, und alles auf Englich :(
Was hast du denn für eine Version?? Dann weiß ich was ich brauche zum Download.


com-chip - Fr 28.01.05 23:19

Was war denn jetzt los?? Da hat doch irgendjemand mein Thema abgetrennt und antworten war nicht möglich. Sorry, ich habe wohl einen Fehler gemacht. Ich wollte es nicht zwei mal schreiben, dachte es passt zum Thema. Wie kriege ich jetzt das zweite von oben weg??? Ich war es ja nicht.

Zum eigentlichen Thema: Ich komme damit nicht klar. Ich habe mir das ja jetzt runtergelade, beide Versionen. Wie geht es jetzt weiter?? Ich kann das Programm nicht anwenden, was muss ich machen?? Kannst du mir da helfen? Ist leider alles auf englich :cry:

WIe muss ich denn das anwenden?

Ach so, nicht das wir uns jetzt missverstehen. Es geht mir nicht unbedingt um die exe Datei. MIr würde es auch reichen wenn ich so mit der Unit und den Projektdateien kleiner compilieren kann, verstehst du? Mir ist es im endefekt egal, Hauptsache die Datei ist möglichst klein, da reichen auch 150 KB. Bitte sag mir wie das Programm funktioniert, ich kann damit nicht viel anfangen und die Anleitung verstehe ich nicht. :(

Moderiert von user profile iconChristian S.: Beiträge zusammengefasst, bitte Edit-Funktion nutzen


Thunderous - Fr 28.01.05 23:24

com-chip hat folgendes geschrieben:
Was war denn jetzt los?? Da hat doch irgendjemand mein Thema abgetrennt und antworten war nicht möglich. Sorry, ich habe wohl einen Fehler gemacht. Ich wollte es nicht zwei mal schreiben, dachte es passt zum Thema. Wie kriege ich jetzt das zweite von oben weg??? Ich war es ja nicht.

Zum eigentlichen Thema: Ich komme damit nicht klar. Ich habe mir das ja jetzt runtergelade, beide Versionen. Wie geht es jetzt weiter?? Ich kann das Programm nicht anwenden, was muss ich machen?? Kannst du mir da helfen? Ist leider alles auf englich :cry:

WIe muss ich denn das anwenden?


ah geht wieder, hatte das gleiche problem.

Hole dir einfach die: "Win32 console version"
Anschliessend ziehst du eine verküpfung aufs desktop und dann per drag und drop die exe rein, die du klein machen willst.
Kommt kurz ein consolen fenster, und siehe da die exe/dll ist, wenn es möglich war um vieles kleiner ;)


com-chip - Fr 28.01.05 23:30

Voll krass ey! Ich danke dir, hat prima funktioniert! Aus einer 391 KB Datei ist eine 161 KB geworden. Hätte nie mals gedacht das es so etwas gibt. Respekt!!!

Ich bin dir sehr dankbar! Wegen der exe war das der einzige Grund weshalb ich mich gerade hier angemeldet habe.

Es heißt ja man kriegt nie genug...

Wie war das mit der anderen Version?? Geht es noch kleiner? Es würde vollkommen ausreichen, aber man kann ja mal fragen. Wie funktioniert das. Aber es ist nur eine große .pas Datei beim Download. :D

Kleine persöhnliche Frage noch. Du bist aus Kirchein sehe ich gerade. Etwa das in Brandenburg bei Herzberg/Elster? Dann wohnst du ja gleich um die Ecke! :wink:

Moderiert von user profile iconChristian S.: Beiträge zusammengefasst, bitte Edit-Funktion benutzen


Thunderous - Fr 28.01.05 23:39

@Hack Gott: winrar

kann leider nicht direkt antworten. Fehler: "Nur haben die Berechtigung, in diesem Forum auf Beiträge zu antworten." ?!
Orginal kopiert - nicht vertippt ;) - egal das phpBB wird wohl an die Grenzen beansprucht :shock:

Zum Thema Winrar: Schau dir mal 7z http://www.7-zip.org/an das funzt noch besser als winrar und entpackt fast alles.


com-chip - Fr 28.01.05 23:42

7-zip ist doch auch nur ein Zip Programm, oder? Genauso wie Winzip und Filzip und wie sie alle heißen. Wie soll das denn gehen??


Thunderous - Fr 28.01.05 23:43

com-chip hat folgendes geschrieben:
Kleine persöhnliche Frage noch. Du bist aus Kirchein sehe ich gerade. Etwa das in Brandenburg bei Herzberg/Elster? Dann wohnst du ja gleich um die Ecke! :wink:


Nee Kirchhain, ist bei Marburg ca. 100km nördlich von Frankfurt/M. Also ziemlich hinterm Mond, und nicht ganz bei dir um die Ecke ;)


com-chip - Fr 28.01.05 23:43

Ach so, ich möchte die exe Datei nicht als zip Format verkleiner. Sie soll möglichts klein sein aber trotzdem mit einem Doppelklick sofort ausgeführt werden, verstehst du?? Also nicht irgendwie verpacken. Nicht das wir jetzt an einander vorbeireden.

Zitat:
Nee Kirchhain, ist bei Marburg ca. 100km nördlich von Frankfurt/M. Also ziemlich hinterm Mond, und nicht ganz bei dir um die Ecke ;)

Die Orte gibt es nun mal öfters. In Marburg war ich übrigens auch schon einmal, schöne gegend.

Moderiert von user profile iconraziel: Doppelposting zusammengefügt. Bitte nächstes Mal Edit-Button benutzen, danke :)


Thunderous - Fr 28.01.05 23:48

com-chip hat folgendes geschrieben:
7-zip ist doch auch nur ein Zip Programm, oder? Genauso wie Winzip und Filzip und wie sie alle heißen. Wie soll das denn gehen??


Jein, 7z hat auch ein eigenes Format, welches recht gut komprimiert.


com-chip - Fr 28.01.05 23:58

Hab mir dieses 7-zip gerade gedownloaded, dauert bei modem nun mal immer ein wenig länger, die neue beta version 1111kb. Ist glaube ich erst sein heute raus. Allerdings muss ich es erstmal schnell installieren. Ich melde mich dann gleich wieder zurück und sage ob ich damit zurecht komme oder ob ich wieder hilfe brauch. Geht das denn auch mit den exe das wieder eine exe bei raus kommt???

Ich komme mit dem 7-zip Programm gar nicht klar! Kannst du mir helfen?? Ich glaube das liegt einfach nur daran, das ich nicht weiß wie es funktioniert. Wie kann ich damit eine exe Datei verkleinern??? Sag mir mal schnell wo ich hoch klicken muss, bitte!!!

Moderiert von user profile iconChristian S.: Beiträge zusammengefasst


Delete - Sa 29.01.05 00:19

7Zip ist ein Packer. So wie RAR und ZIP. Du kannst die Exe damit zwar kleiner machen, aber dann ist sie auch nicht mehr lauffähig. Abgesehen davon: Schon mal die rechte Maustaste probiert? Da gibt´s eine Option für 7Zip.


com-chip - Sa 29.01.05 00:26

Das ist ja blöd. :cry:

Ich habe extra noch einmal gefragt wie du oben sehen kannst. Naja, was soll ich jetzt machen. Hast du vielleicht ne Idee?? Da gibt es ja noch dei Möglichkeit nur mit Api Funktionen zu arbeiten und dies so klein zu halten. Ich bin mit der Programmierung aber schon sehr weit. Geht das vielleicht das ich irgendwelche Compilerinformationen setze das er nur das hineinpackt was er wirklich braucht?? Wäre sehr an eine Antwort interessiert. Danke. Wiel so hinterher kann ich mir nicht vorstellen das er noch sehr viel kleiner werden soll. Oder gibt es irgendwo einen anderen Compiler den man nutzen kann :?:


BenBE - Sa 29.01.05 01:05

Ein Tipp, um seine EXE klein zu bekommen, ist ohne Forms.pas zu arbeiten ... Die frisst allein schon mal gut 150 KB (mit allen Abhängigkeiten). Im Prinzip musst du auf die ganze VCL verzichten, wenn du kleine EXE-Files haben willst. Andere Dinge gibt's (außer DebugInfo entfernen, Externe Debugsymbole weglassen, Assertions deaktivieren, RangeChecks und anderen DebugCode disablen) eigentlich nicht.


com-chip - Sa 29.01.05 11:36

Noch einmal. WIeso Form.pas?? Heist das nicht Unit1.dfm??? Und wie mache ich das?? Ich habe schon ca. 2000 Zeilen mit VCL, das kann ich jetzt nicht mehr alles umschreiben. Ich habe auch gar nicht die Zeit dafür da ich dieses Projekt Heute Abend fertig abgeben muss, wenn es nicht kleiner als 100 KB ist dann gibt es erstmal ärger... Ich habe es mit so einem Kompressor auf 160 KB schon minimiert, das reicht aber nicht. Deshalb, wie geht das mit Unit1.dfm?? Das Programm läuft im Hintergrund ab, also ohne Formular (jedenfall kein sichtbares.) Allerdings nutzt er permanent 2 Timer die darauf platzert sind und schaltet diese ein oder aus um die Uhrzeit zu bestimmen. Das kan ich nicht mehr umprogrammieren und mit einer For Schleife würde es zu lange dauern und zu viel Arbeitsspeicher beanspruchen sowie den Prozessor in arbeit nehmen. ALso wie kriege ich das hin?? Und bei Uses sind auch einträge die ich nicht brauche, lösche ich sie ist die Anwendung aber auch nicht sehr viel kleiner. :(
WIe kann ich das nun kleiner machen?? Und mit Compilerinfos?? Oder DebugINofs?? Kann ich ihm dann nicht sagen, das und das zum Thema Formular brauche ich nicht und der soll mir das dann raus lassen?? Wäre echt dankbar für Hilfe. und ohne VCL geht es nicht und von API hab ich nicht so viel Ahnung, erst vor kurzem erfahren was das überhaupt ist. :oops:


Gausi - Sa 29.01.05 13:36

Ganz oben in deiner Unit1.pas dürfte sowas stehen:

Delphi-Quelltext
1:
2:
3:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons;


Prinzipiell ist Delphi sehr komfortabel, wenn es um die Entwicklung von GUI geht. Dieser Vorteil wird damit erkauft, dass die Programmdateien recht groß werden. Man kann sie etwas kleiner machen, wenn man Exe-Packer drauflosläßt, löst aber nicht das eigentliche Problem.

Die einzige Möglichkeit ist, auf die komfortable und speicherfressende VCL zu verzichten. Der beste Ansprechpartner dafür dürfte wohl Luckie [http://www.luckie-online.de/] sein. Bei kleinen Projekten, die nur ein paar Buttons enthalten, lohnt sich der Mehr-Programmieraufwand. Bei größeren, die viele verschiedene VCL-Komponenten enthalten würden, wirds natürlich schnell unübersichtlich.

Ich habe auch mal von einer "alternativen VCl" gehört, die ähnlich komfortabel, aber weniger speicherintensiv ist, da dort nur das benötigte mitgeladen wird. Ich weiss aber nicht mehr, wie die heisst, und ob und wieviel du dein Programm dafür umschreiben musst.

Edit: Ahhhh...KOL heisst das. Siehe auch etwas weiter unten den Beitrag von retnyg...


ScorpionKing - Sa 29.01.05 13:39

gibt es da nicht nonVCL?
ich glaube da gibt es einen link auf luckies homepage!


Delete - Sa 29.01.05 13:40

Nur mal so aus Neugier, warum bekommst du Ärger, wenn die Exe größer als 100 kb ist? :shock:

Und wie gesagt, verzichte auf die VCL. Bzw. wenn du nur die Timer brauchst, nimm einn Konsolen-Programm.

Delphi ohne VCL: http://tutorials.luckie-online.de
Timer in Konsole: http://www.luckie-online.de/Delphi/Sonstiges/Timer_in_Konsole%20.html


com-chip - Sa 29.01.05 13:58

Das mit der 100 KB grenze ist so eine Richtlinie, meine sonstigen dateien waren immer um die 500 KB wegen dem VCL. Allerdings habe ich gestern von exe Pckern erfahren, deshalb sind sie kleiner als 200KB. Echt cool so ein PRogramm :lol:

Aber was ist eigentlich mit dem KOL?? Das ist nur eine .pas Datei und ich habe keine Ahnung was ich damit anfangen soll :(

Zu dem mit luckie! Echt toller Stoff, den lade ich mir mal runter und schau mir das an.

Mit der Konsolenanwenung komme ich nicht klar. Ich habe den selben Text genommen, die Datei beträgt trotzdem 350 KB.?!?? Hab ich wohl einen Fehler gemacht.


Delete - Sa 29.01.05 14:04

com-chip hat folgendes geschrieben:
Das mit der 100 KB grenze ist so eine Richtlinie,

Wer macht soclhe blödsinnigen Richtlinien und läßt dann mit Delphi programmieren? :roll:

Zitat:

Allerdings habe ich gestern von exe Pckern erfahren, deshalb sind sie kleiner als 200KB. Echt cool so ein PRogramm :lol:

Man sollte allerdings wissen, was man macht, da sie den Windowsspeichermanager aushebeln.

Zitat:

Aber was ist eigentlich mit dem KOL?? Das ist nur eine .pas Datei und ich habe keine Ahnung was ich damit anfangen soll :(

Damit habe ich keine Erfahrungen, aber auf der Homepage finden sich bestimmt Demo Projkete.

Zitat:

Zu dem mit luckie! Echt toller Stoff, den lade ich mir mal runter und schau mir das an.

Aber bis heute Abend dürfte das etwas kanpp werden. ;)

Zitat:

Mit der Konsolenanwenung komme ich nicht klar. Ich habe den selben Text genommen, die Datei beträgt trotzdem 350 KB.?!?? Hab ich wohl einen Fehler gemacht.

Schmeiß die SysUtils.pas aus der Konsolenanwendung raus, das ist der "Dickmacher". Falls du Routinen aus selbiger brauchst, kuck dir mal die Toolbox an: http://www.luckie-online.de/Delphi/Sonstiges -> Toolbox


Christian S. - Sa 29.01.05 14:06

Hallo, com-chip!

Verschiedene Moderatoren haben inzwischen Beiträge von Dir in diesem Thread zusammengefasst. Es ist nicht nötig, zwei Beiträge im Abstand von fünf Minuten direkt hintereinander zu schreiben. Nutze stattdessen die Edit-Funktion!

MfG
Christian


com-chip - Sa 29.01.05 14:15

Wenn ich die sysUtils raus schmeiße, dann sagt er undifinierter Bezeichner! Bei "beep". Dann geht das ja wieder nicht :(

Zu dem anderen mit den zwei Beträgen. Das war gestern mein erster. Den hate ich aus versehen zweimal und jemand anders hatte diesen dann irgendwo hin verschoben. Wie kann ich den entfernen?? Und wo ist der zweite Beitrag??


Christian S. - Sa 29.01.05 14:16

com-chip hat folgendes geschrieben:
Zu dem anderen mit den zwei Beträgen. Das war gestern mein erster. Den hate ich aus versehen zweimal und jemand anders hatte diesen dann irgendwo hin verschoben. Wie kann ich den entfernen?? Und wo ist der zweite Beitrag??

http://www.delphi-forum.de/viewtopic.php?p=211751#211751
http://www.delphi-forum.de/viewtopic.php?p=211754#211754
http://www.delphi-forum.de/viewtopic.php?p=211764#211764
http://www.delphi-forum.de/viewtopic.php?p=211774#211774

Alles weitere per PN! :mahn:


com-chip - Sa 29.01.05 14:27

Ist doch alles wieder in Ordnung. Reg dich mal nicht so auf. Ich habe keine doppelten Einträge finden können. Ich glaube die wurden schon entfernt.

WIe kann ich jetzt mein Problem mit der kleien Datei hinbekommen?? Ich versuche es noch einmal. Ich muss jetzt. Melde mich dann nacher noch einmal. Habe einen Termig. Ihr könnt ja mal nach einer lösung suchen. Tschau bis nachher!!!


retnyg - Sa 29.01.05 15:05

wenn du ohne VCL möglichst kleine exe's möglichst einfach machen willst nimm KOL:
http://bonanzas.rinet.ru
bei fragen wird dir hier geholfen: http://delphi.blue-aura.co.uk/

ich habe sogar einen Converter für VCL->KOL geschrieben, http://krazz.net/retnyg


com-chip - Sa 29.01.05 16:24

Hi! Das mit Hilfe zu KOL ist ja gut gemeint, leider funktioniert es nicht wirklich, da steht alles auf Englisch :(

Dabei wäre ja KOL die Lösung meines Problems, oder?? Ich hoffe Hilfe ist unterwegs. Gibt es vielleicht auch so etwas in Deutsch?????


retnyg - Sa 29.01.05 17:06

nein, das gibts nicht auf deutsch. ein bischen englisch sollteste schon können, zur not nimm http://babelfish.altavista.com - damit kannst du komplette websites übersetzen lassen.

suche mal hier im forum nach KOL, da hat mal jemand ein KOL-Installerpaket gepostet, wo das meiste automatisch eingerichtet wird

//edit:
sonderbar, der richtige Eintrag wird mit der Delphi-Forum suche nicht gefunden, obwohl das wort KOL sogar im titel des Threads steht.... ein BUG ?

habe den thread aber tortzdem gefunden: http://www.delphi-forum.de/viewtopic.php?t=20223

Moderiert von user profile iconraziel: Doppelposting zusammengefügt. Nächstes mal bitte editieren! Christians Posting weiter oben ist doch wirklich nicht zu überehen :mahn:


Christian S. - Sa 29.01.05 17:14

retnyg hat folgendes geschrieben:
onderbar, der richtige Eintrag wird mit der Delphi-Forum suche nicht gefunden, obwohl das wort KOL sogar im titel des Threads steht.... ein BUG ?
Wird bei mir gefunden. :nixweiss:


retnyg - Sa 29.01.05 17:21

Christian S. hat folgendes geschrieben:
retnyg hat folgendes geschrieben:
onderbar, der richtige Eintrag wird mit der Delphi-Forum suche nicht gefunden, obwohl das wort KOL sogar im titel des Threads steht.... ein BUG ?
Wird bei mir gefunden. :nixweiss:


bei mir liefert die suche nach KOL 5 einträge zurück, der 2. wäre http://www.delphi-forum.de/viewtopic.php?t=20271&highlight=kol <- heisst auch KOL Distro, aber der eigentliche KOL Distro thread ist bei den Ergebnissen nicht drin

edit: ausserdem wird der beitrag Ascii-Art von Roller auch nicht gefunden, obwohl dort auch kol drinne steht...


Christian S. - Sa 29.01.05 17:23

retnyg hat folgendes geschrieben:
bei mir liefert die suche nach KOL 5 einträge zurück, der 2. wäre http://www.delphi-forum.de/viewtopic.php?t=20271&highlight=kol <- heisst auch KOL Distro, aber der eigentliche KOL Distro thread ist bei den Ergebnissen nicht drin
Du suchst wahrscheinlich über die Sidebar-Box. Mach da mal den Haken bei "In diesem Forum suchen" weg. ;-)

Und jetzt :arrow: Back to topic


retnyg - Sa 29.01.05 17:24

Christian S. hat folgendes geschrieben:
]Du suchst wahrscheinlich über die Sidebar-Box. Mach da mal den Haken bei "In diesem Forum suchen" weg. ;-)

Aha, der Nebel lichtet sich ^^


retnyg - Mi 02.02.05 06:29

so ich hab da mal was geuppt: meinen mp3player, war mein erstes KOL-Projekt (in Verbindung mit MCK, den Mirror Classes, um mit Formularen arbeiten zu können).

das teil kann alles was man braucht und hat schlappe 39 kb...
mehr dazu hier: http://www.delphi-forum.de/viewtopic.php?p=213235#213235

user defined image