![]() |
Fragen zu den Units
Nun, wenn ich irgendwelche Komponenten auf meine Form ziehe, mir sie dann doch nicht gefallen (z.B. ne Jedi-Komponente), bleiben die Units trotzdem im Projekt.
Frage Nr 1: -Optimiert er den Code so, dass die offensichtlich nicht oder nie benötigten Units einfach weggelassen werden oder kompiliert er sie trotzdem in die EXE? Also muss ich die nicht mehr benötigten Units dann manuell löschen? Frage Nr 2: -Habe ich ein und dieselbe Unit in mehreren anderen Units unter "uses" eingebunden, "verlinkt" er sie dann mehrfach oder nur einmal? Also kompiliert er mehrere Instanzen der Unit oder nicht? Weiss nicht wie ich das besser ausdrücken soll ^^ Frage Nr 3: -Soweit ich das gelesen hab, sollten Units, die von Komponenten auf der Form gebraucht werden oder welche, die vor der Ausführung benötigt werden (z.B. Units mit Typendeklarationen) im Interface-Teil stehen, andere, z.B. eigene Units sollten im Implementation-Teil stehen. Ist das richtig so? Viele Grüße, Stefan |
Re: Fragen zu den Units
Zitat:
Wenn Du die exe so klein wie möglich haklten willst, musst Du selbst hand anlegen. Zitat:
Zitat:
Natürlich kannst Du auch alle Units "oben" (im Interface) einfügen. |
Re: Fragen zu den Units
Zitat:
![]() |
Re: Fragen zu den Units
Zitat:
In der Exe landet aller Code der eventuell mal aufgerufen werden könnte. Enthält eine Unit z.B. diese Funktion: function NeverGetsCalled: boolean; begin Result := true; end; dann wird diese, falls sie nirgendwo aufgerufen wird wegoptimiert! Schwierig wird es für den Compiler bei Objekten die Typinformationen enthalten (also alle Komponenten etc. bzw. Objekte die mit $M compilliert wurden). Der Code dieser Komponenten/Objekte könnte ja indirekt während der Laufzeit aufgerufen werden, indem man sich über "FindClass" (Parameter kann ja aus einer Benutzereingabe kommen!!) oder per RTTI das Objekt holt. In einem solchen Fall wird die betreffende Klasse ja nirgendwo im Source direkt referenziert, der Code könnte aber trotzdem benötigt werden! Aus diesem Grunde bleibt dieser Code auf jeden Fall drin. Im allgemeinen kann man sagen, daß alles bei dem im Editor die blauen Punkte vor der Zeile angezeigt werden auch in die fertige EXE gelangt. Fehlen diese Punkte so wird dieser Code auch nicht in der EXE zu finden sein. [edit]: ausserdem werden alle Units ins Programm übernommen bei denen Code in "initialization" oder "finalization" steht, da der Compiler nicht entscheiden kann ob dieser Code etwas eventuell für das Programm entscheidendes tut. Ciao, Ralf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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