![]() |
Unit deaktivieren
Hallo,
ich habe TurboDelphi (intern wohl Version 10) und komme mit dem Editor nicht klar. Ich habe in meinem Quellcode bislang TStringList benutzt, die in der Unit Classes definiert ist. Da aber unter anderem diese sehr groß ist, will ich sie raushaben. Mir ist klar, dass ich dann Teile des Codes neu/anders machen muss. Das ist nicht mein Problem. Mein Problem ist: Wenn ich nun auf "Speichern", "Erstellen" oder ausführen klicke, wird Uses immer wieder um Classes ergänzt. So ist es sehr mühselig, den Code zu bereinigen. Mir wäre es lieber, wenn Classes raus wäre und mir der Compiler einen Fehler melden würde. Dasselbe Problem habe ich mit der Unit Dialogs ... Wie kann ich es verhindern, dass Untis gegen meinen Willen ergänzt werden? Gruß, Alex |
Re: Unit deaktivieren
Es scheint etwas davon benötigt zu werden. Zudem werden nur die Teile eingebunden, welche benötigt werden
|
Re: Unit deaktivieren
Verwendest du Formulare (TForm)?
|
Re: Unit deaktivieren
Zitat:
Ich habe - vermutlich - den Übeltäter gefunden. Ich habe in der Tat Formulare und daher Forms mit drin. Aber es liegt offenbar an einem TTimer. Wenn der weg ist, dann erscheint Classes auch nicht mehr. Es liegt scheinbar nur an dieser einzigen Deklaration:
Delphi-Quellcode:
Dass man die eine Zeile nicht in ExtCrtls nicht mit reingeschrieben hat ... Muss ich also auf den Timer auch verzichten :smile2:, obwohl das bei der Größe von Forms wohl auch keine Rolle mehr spielt!
TNotifyEvent = procedure(Sender: TObject) of object;
Aber es muss doch trotzdem eine Möglichkeit geben, diese Bevormundung wegzumachen, oder? Ich will doch auch mal Fehler machen. Gruß, Alex |
Re: Unit deaktivieren
Zitat:
|
Re: Unit deaktivieren
Die standardmäßig eingebundene, aber von vorne herein nicht gebrauchte Unit ist übrigens Variants. Und deine einzige Chance wirklich einen Unterschied zu erreichen wäre wie schon erwähnt gänzlich auf alles aus der VCL zu verzichten, so dass du quasi mit den Units System und Windows auskommst (ein paar mehr gibt's schon, aber verabschiede dich von TForm, TButton und Konsorten, wie auch vom Formulardesigner). Eben das berüchtigte non-VCL Programmieren, wie damals unter C ohne MFC o.ä., pure WinAPI.
|
Re: Unit deaktivieren
Das Problem bei Units wie Klasses ist eigentlich sowas
Delphi-Quellcode:
da wird soviel über die Fnitialization/Finalization eingebunden
initialization
InitThreadSynchronization; AddModuleUnloadProc(ModuleUnload); GlobalNameSpace := TMultiReadExclusiveWriteSynchronizer.Create; RegGroups := TRegGroups.Create; IntConstList := TThreadList.Create; GlobalFixupList := TThreadList.Create; es wird also nicht wirklich nur das Eingebunden, was gebraucht wird, sondern viel mehr |
Re: Unit deaktivieren
Es gibt von meinem Programm 2 Varianten: Eine mit dem ganzen VCL-Zeugs und eine andere ohne das alles. Ich bin nur auf VCL zurückgekommen, weil ich mit dem "Warten" Probleme habe/hatte. In VCL mache ich das mit dem TTimer. Im nonVCL habe ich mit
Delphi-Quellcode:
gewartet. Das lastet mir aber den Prozessor zu sehr aus. Dann kam TThread, damit Classes und damit ein Schwergewicht in Spiel. Und daher habe ich dann wieder TTimer genommen, weil es dann auch nicht mehr darauf ankam.
Repeat
Sleep(250); Application.Processmessages; Until ...; Im Grunde ist mir die Größe der exe-Datei auch egal. Mir käme es eher darauf an, dass die Programme zur Laufzeit möglichst schmal sind. Ich habe aber gesehen, dass auch meine 46-KB-nonVCL-exe genau wie das 170-KB-VCL-Pendant ca. 4 MB RAM einnimmt. Deshalb habe ich damit aufgehört, auf Teufel komm raus die Functionen der Units selbst zu schreiben. |
Re: Unit deaktivieren
Wäre da nicht
![]() |
Re: Unit deaktivieren
das mit dem Timer wurde grad gesagt.
Zitat:
es sei denn du läßt in einer der Messages massig viel rechnen oder ein paralleler Thread ist daran schuld. (ich hab in vielen Programmen schon solche Schleifen eingesetzt und das mit weit kürzeren Zeiten ... z.B. 20 ms und nichtmal 1% Belastung) Außerdem gehört Application eigentlich mit zur VCL und hat demnach nicht viel mit NonVCL zu tun. |
Re: Unit deaktivieren
Hallo,
woher weiß Delphi eigentlich, welche Units einzubinden sind. Delphi weiß ja bei einer in der IDE installierten Komponenten auch, wie die Unit heißt, welche bei Verwendung der Komponente einzubinden ist. Nur, woher weiß Delphi das? Sogar bei Fremdkomponenten funktioniert die automatische Einbindung in der Uses Klausel. Zum Beispiel wenn ich eine Komponente des SynEdit Projektes auf mein Formular klicke, schreibt Delphi automatisch die dann benötigeten Units in den Uses-Abschnitt. WIeso kann Delphi das. Welcher Mechanismus wirkt da? |
Re: Unit deaktivieren
Das ist Kram der aus den Designtime-Packages ersichtlich ist, allen voran die user.dpk (war doch .dpk oder? :gruebel:). Und dann geht's einfach über durchgehen der Abhängigkeiten: Alle Units die eine benutzte Unit in ihrer uses-Klausel stehen hat müssen auch rein, und die die dort aufgeführt sind auch, etc. pp.
|
Re: Unit deaktivieren
Aaaaha, da liest Delphi also aus der Package Datei die Namen der verwendeten Units und trägt sie bei Verwendung der Komponente in den Uses Abschnitt ein. :):):) Ok, das geht natürlich auch.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:13 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