Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Initialisierung falsch ! (https://www.delphipraxis.net/211244-initialisierung-falsch.html)

peterbelow 21. Aug 2022 11:33

AW: Initialisierung falsch !
 
Zitat:

Zitat von TERWI (Beitrag 1510437)

Ich ba keinen Schimmer, wo man diesn Bug ( ? ) noch suchen könnte.

Es gibt da die Property OldCreateOrder, False als Default. Vielleicht hast Du die in deinem Problemprojekt mal versehendlich auf True gesetzt...

Einen guten Punkt für die (nur einmal auszuführende) Initialisierung eines Forms zu finden ist manchmal nicht einfach. Ich habe dafür oft den OnPaint-Event des Forms verwendet. Die erste Zeile darin ist dann

Delphi-Quellcode:
  OnPaint := nil;
Damit wird der Handler nur einmal aufgerufen.

TERWI 21. Aug 2022 12:16

AW: Initialisierung falsch !
 
... daran hatte ich auch schon gedacht und auch die Props alle durchgesehen.
OldCreateOrder ist false.

Na ja, OnPaint kommt ja relativ oft.
OnActivate m.W.n. nur wenn das Fenster den Focus bekommt.
Man könnte auch OnShow nehmen - das wäre (hier) egal.

Da ich früher zu oft auf die Nase gefallen bin, was zu initialisierende var's/Programmteile betrifft, hat sich bei mir eingebürgert:
- Alle Units/Forms de-/intialisieren im jeweiligen Create/Destroy ihre eigenen Kamellen.
- Jede Unit/Form hat für eine Fremd-Intitialisierung eine DoINIT/DoExit Prozedur, wo alles weitere wichtige zur Laufzeit übergeben wird.
- Die MainForm lädt/erzeugt alles wichtige in OnActivate (die Forms sind dann mit Create durch...) und gibt dann an alle DoINITs weiter.
Damit ist alles fertig eingerichtet und wenn die Form erscheint, ist alles passend da.

Bei meinem Problem hier kam eben das OnActivate der Main VOR ( ! ) dem Create der Form LAV.
Da fehlten dann ein paar elementare Zuweisungen, so dass es beim Programmstart wie Beenden dauernd mehrfach "geknallt" hat.

himitsu 21. Aug 2022 12:51

AW: Initialisierung falsch !
 
Zitat:

Ja, visible ist true.
Selbst Schuld, denn hier ist die Form bereits im Inherited des Create und somit auch lange vor dem OnCreate sichtbar, weil es bereits sichtbar geladen wird.


In fast 30 Jahren hätte es aber genug Zeit gegeben, sich mal mit dem Debugger zu beschäftigen.

IDE (Texteditor mit Highlighting), Compiler und Debugger in einer Anwendung, das war gerade der große Fortschritt, den uns Turbo Pascal und Delphi gebracht haben.

TERWI 21. Aug 2022 13:13

AW: Initialisierung falsch !
 
Die goldene F1-Taste geht heute an ........ himitsu !

Asche auf mein Haupt - da hatte ich wohl nicht richtig hingeguckt, bzw. in der falschen Form nachgesehen.
Im der alten Main ist visinle = true, in der neuen false (default ?!).
Kann mich nicht erinnern, das mal bewusst geändert zu haben.
Mal juxeshalber auf true gesetzt und bumms.

Das dieses (für mich) eher unscheinbare Property die Reihenfolge derart beeinflusst, war mir bisher nicht bekannt.
Man lernt nie aus ....
Auf jeden Fall hat das hier an 2 Tagen ne Menge Ärger und Arbeit gemacht - vergessen werde ich das sicher nicht mehr !

(... der Debugger hätte mir wahrscheinlich vom Sinn her das gleiche gesagt wie mein LOG, aber auch nicht warum ...)

himitsu 21. Aug 2022 13:30

AW: Initialisierung falsch !
 
Ja, früher war es mal defult True ... seit 'ner Weile (jahrzehnte) ist es nun Default false.

Genauso wie sich die Ausführung von OnCreate verschoben hat (jetzt im AfterCreate und früher schon im Create) ... beim Upgrade alter Projekte/Forms in neuen Delphi wird daher das neue OldCreateOrder auf True gesetzt (was aber per Default auf False steht).

jaenicke 21. Aug 2022 13:53

AW: Initialisierung falsch !
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von TERWI (Beitrag 1510448)
(... der Debugger hätte mir wahrscheinlich vom Sinn her das gleiche gesagt wie mein LOG, aber auch nicht warum ...)

Doch, da siehst du genau, wo das ausgelöst wird:

Anhang 55318

Eben bereits beim Erstellen, weil die Form Visible direkt im FormStatus hat. Hättest du das gepostet, hätte es dir direkt jemand sagen können.

TERWI 21. Aug 2022 14:58

AW: Initialisierung falsch !
 
Hätte ich das gewusst, was visible da im Detail alles macht, hätte es diesen Fred gar nicht gegeben.
Ich war bisher der Meinung, das beeinflusst nur die Anzeige selbst.
... nun bin ich ja wieder etwas schlauer.

venice2 21. Aug 2022 15:01

AW: Initialisierung falsch !
 
Zitat:

Ich war bisher der Meinung, das beeinflusst nur die Anzeige selbst.
Tja die IDE ist schon sehr suspekt.

Uwe Raabe 21. Aug 2022 15:07

AW: Initialisierung falsch !
 
Zitat:

Zitat von TERWI (Beitrag 1510455)
Hätte ich das gewusst, was visible da im Detail alles macht, hätte es diesen Fred gar nicht gegeben.
Ich war bisher der Meinung, das beeinflusst nur die Anzeige selbst.

Es beeinflusst ja auch nur die Anzeige - genauer, ob das Form beim Create angezeigt wird oder nicht. Indirekt beeinflusst es damit halt auch den Zeitpunkt der Anzeige. Das hat aber nichts mit der IDE zu tun (geschieht ja eh alles zur Runtime), sondern mit dem DFM-Streaming. Was das FormCreate betrifft spielt das OldCreateOrder dann ja auch noch eine Rolle bezüglich der Aufruf-Reihenfolge. Niemand hat behauptet dass Programmieren einfach sei.

venice2 21. Aug 2022 15:10

AW: Initialisierung falsch !
 
Zitat:

Das hat aber nichts mit der IDE zu tun (geschieht ja eh alles zur Runtime)
Sicher ?

Fakt ist doch das es innerhalb der IDE definiert Eingestellt werden muß.
Inwiefern hat es dann mit der IDE nichts zu tun.

Wegen dieser Zwiespältigkeit arbeite ich lieber ohne soweit dies möglich ist.
Ok! Bin raus Thema scheint ja erledigt zu sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 Uhr.
Seite 2 von 4     12 34      

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