Autor Beitrag
xel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Di 27.08.02 17:51 
Hi All,

also ich mein Programm platzt aus allem Nähten... die "exe" datei ist schon 1,8 MB Gross... jetzt will ich es zerteilen... d.h. auch die Forms.. usw... mit DLL könnte ich es ja machen aber gibt es da noch andere möglichkeiten?


Danke für alle Antworten....
Xel
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Di 27.08.02 18:20 
HAllo,

das mit den DLLs ist gar nicht so einfach, da diese nicht Objekt Orientiert sind. Wenn du z.B. MIDI-Forms in dieser verwenden willst wird das wahrscheinlich scheitern (mit ist kein Weg bekannt wie das funktioniert [wenn jemad einen Kennt immer her damit]).
Du kannst dein Programm einfach ohne die BLS Linken (Projekt->Optionen->Linker->Mit Laufzeipackages Compilieren). Das macht deine EXE erheblich kleiner, du musst aber die Laufzeitpackages (*.BPL), äquivalent zu den RuntimeDlls von Visual Basic, mit außliefer. Aber das eben nur einmal, deine EXE kannst du dann erweitern und austauschen ohne das due die BPLs jedesmal mit rausgeben musst. Lediglich wenn du eine neue Komponente, welche in einem bisher noch nicht verwendeten BPL enthalten ist, verwendest musst du diese eine BPL mit ausliefern.

Gruß
Klabautermann
GPF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 85



BeitragVerfasst: Di 27.08.02 19:33 
Ist die Größe ein Problem?

Klabautermann hat vollkommen recht - Formulare in DLL's auszulagern ist umständlich und fehlerträchtig. Sofern Du keine wirklich modulare Lösung anstrebst oder Plugins für Dein Programm zulassen möchtest solltest Du darauf verzichten.

Aber zurück zu meiner Frage - stört Dich die Größe der Datei wirklich?
Selbst wenn Du massig Ressourcen (große Grafiken, Sounddateien, etc.) in das Hauptfile integrierst wirst Du kein Performanceverlust spüren, da Windows nur die Programmteile lädt, die auch wirklich benötigt werden.

Sofern Du nur eine Instanz oder ziemlich wenige Instanzen Deines Programmes zuläßt könnte auch ein Exepacker helfen. UPX (googeln) komprimiert meine compilierten Programme auf 1/2 bis 1/3 Größe.
Auch solltest Du Ressourcen nicht mit in die Exedatei auslagern.
Der Grund für diese Beschränkung ist simpel - der Exepacker packt die Datei komplett, entpackt diese komplette Exe-Datei in den Arbeitsspeicher bei Ausführung und ruft diese dort auf. Wenn Du also mehrmals das Programm gleichzeitig öffnest wird jedesmal wieder die gesamte Exedatei im Arbeitsspeicher entpackt - und zwar für jede Instanz.

_________________
"Wenn Debugging ein Vorgang ist, Fehler aus einem Programm auszubauen, dann ist Programmieren der Vorgang, Fehler einzubauen."