Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 08:49

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: groesse der exe-datei minimieren
BeitragVerfasst: So Mai 09, 2004 10:40 
Offline
DGL Member

Registriert: So Nov 16, 2003 14:37
Beiträge: 37
tja, ich hab gerade den api-basecode kompiliert und mit erschrecken festgestellt, dass die erzeugte exe rund 140 kb gross ist. meine frage ist nun, wie ich den compiler konfigurieren kann, um die exe zu "schrumpfen".

kleine bemerkung zum schluss: in c++ schaffe ich das selbe in rund 50 kb, da ich pascal aber besser verstehe, würde ich gern dabei bleiben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 09, 2004 11:03 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Die Größe der Exe-Datei ist doch ansich nebensächlich, wenn du nicht gerade n Limit wie 64kb bei einer Demo hast? Den meisten Platz werden eh Texturen und co einnehmen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 09, 2004 11:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Da geb ich Alibi recht. Aber generell muss man leider sagen das besonders neue Delphi-Versionen recht große EXE-Dateien genereieren (die von meinem aktuellen Projekt hat bereits über 840 KByte), und ändern kann man da mit Compileroptionen leider nicht viel. Was die Dateien unter Delphi leider stark in die Größe bringt ist die SysUtils.pas, auf die deshalb verzichtet werden sollte. Viele Leute schreiben sich die Funktionen die sie daraus brauchen (sind meistens nur simple Sachen) selbst, oder nehmen eine schlankere Ersatzunit. Alternativ empfehle ich dann noch einen EXE-Packer wie UPX.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 09, 2004 11:19 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Die Größe hört sich aber keineswegs nach einer neueren Delphi-Version an (außer Du knallst die Debug-Maps mit rein). Es ist durchaus möglich ein OpenGL-Init (ohne Packer) auf rund 14KB bekommen. Grob gesagt, musst Du eben alles weglassen, was irgendwie mit der VCL zu kriegen hat. z.B. ist SysUtils wohl der Beste anfang (vermute bei der Größe sehr stark, dass diese drinne sein wird). Einige Funktionen wie StrToInt lassen sich prima in eine Extra-Unit packen, da erschreckenderweise gerade die Datumsfunktionen das zu sein scheinen, was die Exe dann so furchtbar aufbläht.

Sofern es nicht wirklich 64kb werden soll, sondern nur ums Prinzip geht. Lasse API API sein. Durch .NET wird auf kurz oder lange ohnehin dessen Ende eingeleitet werden, so dass es keinen Sinn macht dafür noch zu entwickeln, sofern es brauchbare alternativen gibt. Gerade SDL funktioniert sehr ähnlich die API und ist zudem Plattform übergreifend und sollte im Gegensatz zur VCL auch auf entliche Units verzichten können, die man bei der Grafikprogrammierung nicht unbedingt braucht. Würde also eher in diese Richtung gehen bzw. dem DSL-Zeitalter Tribut zollen ;)

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 09, 2004 11:31 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Ich wundere mich warum die eigentlich so groß sind, weil durch das SmartLinking doch eigentlich nur die verwendeten Funktionen mit eingebunden werden. Vielleicht werden im Initialisierungsabschnitt der jeweiligen Units wie Classes oder Sysutils einige der Funktionen genutzt und bestimmte Standardfunktionen immer eingebunden.Man kann glaube ich für noch kleinere Dateien auch die System Unit anpassen und neu kompilieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 09, 2004 12:15 
Offline
DGL Member

Registriert: So Nov 16, 2003 14:37
Beiträge: 37
hmm... ich verwende kein sysutils. ich hab nur windows, messages und opengl12 drinnen. ich wollte einfach nur austesten, ob so eine kleine datei auch mit delphi möglich ist.
auf den gedanken hat mich eigentlich "cubes" gebracht, die exe hat ja nur 50 kb. mich würde nur interessieren, ob red einen exe-packer verwendet hat.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 09, 2004 12:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
Probier einfach die cubes.exe mit upx wieder zu entpacken.
Der upx Packer ist imo wirklich ne feine Sache. Ich habe damit bereits .dll Dateien von 440 kb auf unter 50kb komprimert. Nur sollte man bei der benutzung wirklich nur die letztes Stabile Version benutzen. Auf der UPX Homepage gibts eine Beta Version zum Download (1.90 oder so). Normalerweise benutze ich solche Beta Version. Aber bei UPX kann das dann absolut negative Auswirkungen haben. Die letzte als stabil freigebene Version funktioniert ohne Probleme. Aber lieber Finger weg von der neusten Beta Version...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 09, 2004 22:00 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
take a look on: http://bonanzas.rinet.ru/e_system.htm . Using kol and the system replacement units give very small exe sizes.

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 10, 2004 11:10 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Also ich versteh das Theater um eine kleine EXE nicht. Wenn man z.b. SOS's neues Projekt anschaut, ist die EXE-Größe wirklich das kleinere Problem. Der witz ist nur, dass alle immer die EXE-Größe im vergleich zu kommerziellen Games betrachten, die mit Visual C/C++ erstellt wurden. Wenn man allerdings bedenkt, dass die Visual C/C++ Programme meistens die Runtime benötigen (die bei Windows schon dabei ist), dann sind die Exes auch nicht mehr so klein. Kompilier doch deine Anwendung mal mit den Packages RTL und, falls notwendig, VCL. Dann hat deine EXE auf einmal auch nur noch ein paar KB. Nur must du eben die Packages (entspricht also der VC-Runtime msvcrt.dll) mitliefern.

Außerdem haben viele kommerziell Games ne kleinere Starter-EXE die dann ne größere EXE oder DLL aufrufen die meist sogar noch 'ne andere Endung haben. Wenn man also nicht an nem 64KB Contest teilnimmt, lohnt sich IMHO der Aufwand die EXE klein zu halten überhaupt nicht! Und der Vergleich kleine EXE = gutes und effektieves Programm ist zu dem sowieso daneben!

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 10, 2004 11:42 
Offline
DGL Member

Registriert: So Nov 16, 2003 14:37
Beiträge: 37
Das mit den Runtimes trifft auf Visual C++ zu, nicht aber auf C++BuilderX (Borland rocks!). Aber an die Key Objects Library hätt ich denken können... damit sind 10 kb kleine Programme 0 Problem.
Thx! War eben als "Machbarkeitsstudie" gedacht.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]