mikrocontroller.net

Forum: PC-Programmierung Delphi 7-Programme zu groß


Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich bin Delphi-Einsteiger und habe folgende Frage:
 wenn ich eine einfache Oberfläche mit einpaar Buttons unter Delphi 7
zusammenklicke, erzeugt mir der compiler eine exe von eineigen hundert
KB (200KB...). Liegt das an der Effizienz des Compilers oder sind da
auch Debug-Infos mit dabei. Ich kenne das von VS 6++ von Microsoft, da
sind exe-Dateien mit debug-Infos auch riesengroß.

Autor: Joline (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst mit Delphi auch so kleine Programme haben, wie in VC6.

Die Größe kommt zustande, da alle benötigten Bibliotheken in die Exe
eingebunden sind (Standardeinstellung).

Bei VC werden die benötigten Bibliotheken nicht in die Exe
eingebunden (Standardeinstellung).

Bei M$-Porgrammen ist das auch recht vorteilhaft, da meist alle
verwendeteten Bibliotheken (wie bspw. com32dlg.dll) schon auf (fast)
jedem Rechner vorliegen. Diese werden nämlich auch vom Betriebssystem
benötigt und sind deshalb im Systemverzeichnis zu finden.

Bei Delphi-Programmen ist das anders. Die VCL-Biobiothek (heißt bei
Borland Package) ist nicht auf jedem Rechner vorhanden und so geht
Borland (standardmäßig) davon aus, diese gleich mit in die Exe
einzubinden, damit die Exe dann auch auf jedem Rechner sofort lauffähig
ist.

Wenn Du nun kleinere Programme haben willst, weil bspw. auf dem Rechner
mehrere Delphi-Programme laufen, kannst Du die Bibliotheken auch als
extern einbinden. Entsprechende Einstellungen sind unter
Projekt|Optionen|Packages zu machen. Dann solltest Du aber nicht
vergessen, die benötigten BPL mitzuliefern.

Joline

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
comdlg32.dll ist ein ungünstig gewähltes Beispiel - die ist ein
Systembestandteil und wird nie statisch gelinkt.

msvcrt*.dll (C runtime-Library)
mfc*.dll (MFC library)
- das sind DLLs, die auch statisch gelinkt werden könnten.

Wobei mfc*.dll natürlich nur dann gelinkt wird, wenn MFC-Applikationen
geschrieben werden; ein C-Programm benötigt diese DLL (resp. die
alternative statische Library) niemals; ein C++-Programm auch nicht, so
lange es keine MFC-Applikation ist.

Eine Abhilfe bei zu großen Binaries ist übrigens die Verwendung eines
EXE-Packers à la UPX.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.