AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unit deaktivieren

Ein Thema von Schwedenbitter · begonnen am 6. Okt 2009 · letzter Beitrag vom 7. Okt 2009
Antwort Antwort
Seite 1 von 2  1 2      
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Unit deaktivieren

  Alt 6. Okt 2009, 21:33
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
Alex Winzer
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Unit deaktivieren

  Alt 6. Okt 2009, 21:37
Es scheint etwas davon benötigt zu werden. Zudem werden nur die Teile eingebunden, welche benötigt werden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Unit deaktivieren

  Alt 6. Okt 2009, 21:56
Verwendest du Formulare (TForm)?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Unit deaktivieren

  Alt 6. Okt 2009, 22:29
Zitat von mkinzler:
Es scheint etwas davon benötigt zu werden. Zudem werden nur die Teile eingebunden, welche benötigt werden
Da gab es mal irgendwo einen Thread wo stand, dass genau das nicht der Fall wäre. Ich weiß es auch nicht besser. Aber meine Erfahrung mit großen exe-Dateien lehrt mich ebenfalls, dass es so nicht sein dürfte.

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:  TNotifyEvent = procedure(Sender: TObject) of object; Dass man die eine Zeile nicht in ExtCrtls nicht mit reingeschrieben hat ... Muss ich also auf den Timer auch verzichten , obwohl das bei der Größe von Forms wohl auch keine Rolle mehr spielt!

Aber es muss doch trotzdem eine Möglichkeit geben, diese Bevormundung wegzumachen, oder? Ich will doch auch mal Fehler machen.

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Unit deaktivieren

  Alt 6. Okt 2009, 22:46
Zitat von Schwedenbitter:
Ich habe in der Tat Formulare und daher Forms mit drin.
Dann vergiss jedliche Exe-Größe-Optimierung. Forms.pas wird genügend der "ungewollten" Units verwenden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Unit deaktivieren

  Alt 6. Okt 2009, 23:16
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#7

Re: Unit deaktivieren

  Alt 6. Okt 2009, 23:29
Das Problem bei Units wie Klasses ist eigentlich sowas
Delphi-Quellcode:
initialization
  InitThreadSynchronization;
  AddModuleUnloadProc(ModuleUnload);
  GlobalNameSpace := TMultiReadExclusiveWriteSynchronizer.Create;
  RegGroups := TRegGroups.Create;
  IntConstList := TThreadList.Create;
  GlobalFixupList := TThreadList.Create;
da wird soviel über die Fnitialization/Finalization eingebunden

es wird also nicht wirklich nur das Eingebunden, was gebraucht wird, sondern viel mehr
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Unit deaktivieren

  Alt 6. Okt 2009, 23:36
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:
Repeat
   Sleep(250);
   Application.Processmessages;
Until ...;
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.

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.
Alex Winzer
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Unit deaktivieren

  Alt 6. Okt 2009, 23:45
Wäre da nicht MSDN-Library durchsuchenSetTimer() etwas für dich? (Intern macht's der VCL Timer auch nicht anders.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#10

Re: Unit deaktivieren

  Alt 6. Okt 2009, 23:55
das mit dem Timer wurde grad gesagt.

Zitat:
Delphi-Quellcode:
Repeat
   Sleep(250);
   Application.Processmessages;
Until ...;
Das sollte die CPU aber eigentlich nicht viel Auslasten
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz