AGB  ·  Datenschutz  ·  Impressum  







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

Initialisierung falsch !

Ein Thema von TERWI · begonnen am 20. Aug 2022 · letzter Beitrag vom 25. Aug 2022
Antwort Antwort
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Initialisierung falsch !

  Alt 20. Aug 2022, 20:54
... das hatte ich schon verstanden.
Nur ist der reichlich lang.
Was ich nicht verstehe, ist eben das bereits o.g.
Bis gestern Mittag funzte das alles bis die Fehler beim nächsten kompilieren auftraten.
Die wenigen gemachten Änderungen hatte ich wieder auskommentiert, aber diese merkwürdige Ini-Reihenfolge bleibt hartnäckig.
Ich habe heute wie gesagt das "baugleiche" Projekt ohne Inhalt noch mal gemacht - das läuft.
Das org. Projekt habe ich Routine für Routine soweit auskommentiert, so das nur 2 Formen übrigbleiben und bis beide (im LOG) quasi das gleiche zeigen müssten.
Tun sie aber eben in der Reihenfolge nicht.
Warum ?
OnActivate der Main-Proc kommt doch erst, wenn alle Creates fertig sind - siehe 2. LO oben.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#2

AW: Initialisierung falsch !

  Alt 20. Aug 2022, 21:10
Ich sehe laut Log nur zwei unterschiede einmal das die INI geladen wird und einmal nicht.
Es muß doch möglich sein herauszufinden warum dies der Fall ist.
Debugger ist dein Freund.
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Initialisierung falsch !

  Alt 20. Aug 2022, 22:03
Das die INI im 2. nicht da ist, ist unwichtig.
Dann schau dir bitte mal genau die Reihenfolgen an.

Im 1.LOG:
... MAIN.CREATE
... LAV.DOINIT (in MAIN.ACTIVATE) -> FALSCH
... LAV.CREATE -> FALSCH, muss vor ACTIVATE kommen !

Im 2. LOG
... MAIN.CREATE
... LAV.CREATE
... LAV.DOINIT (in MAIN.ACTIVATE)

Ich selbst kann da in der Form ja nichts an der Reihenfolge drehen.

Geändert von TERWI (20. Aug 2022 um 22:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Initialisierung falsch !

  Alt 20. Aug 2022, 22:48
Visible der Form steht nicht auf True?

Ansonsten ... du hast einen Debugger, du hast den Code, welchen wir nicht haben, also wirst du wohl mal mit dem Debugger schauen, von wo was aufgerufen wird, was da falsch ist.



Und natürlich hast du eine Versionsverwaltung (oder zumindesten die Historie im Delphi) und somit kannst du auch sehen was sich geändert hat.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Aug 2022 um 22:53 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#5

AW: Initialisierung falsch !

  Alt 20. Aug 2022, 23:05
Zitat:
Das die INI im 2. nicht da ist, ist unwichtig.
Wenn du das sagst.

Aber genau hier könnte dein Problem liegen das diverse Dinge beim laden für verschiedene Einstelllungen
es verhindert das Activate eben nicht vorher aufgerufen wird. Oder eben doch!

Aber was weiß Ich schon. Kein Quelltext kann nicht debuggen schaue also in eine

Geändert von venice2 (20. Aug 2022 um 23:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Initialisierung falsch !

  Alt 21. Aug 2022, 12:13
@himitsu
Ja, visible ist true.
Vom Debugger hab ich null Plan - seit dem es den für TurboPascal/Delphi gab, hab ich den niebenutzt/benutzen müssen...

@venice2 u. a.

OnActivate ist ein Event der Form und wird nur aufgerufen, wenn ich im Objektinspektor unter den Ereignissen entsprechend eine Funktion eintrage.

Nach meinem Kenntnisstand werden zunächst alle ( ! ) geladenen Forms nach
"Application.Initialize"
über FormCreate initialisiert (sofern dort jeweils was im OI eingetragen ist).

Erst dann folgt mittels
"Application.Run"
das OnActivate/OnShow der ersten nach
"Application.Initialize" bzw.
"Application.MainFormOnTaskbar := True"
in der Projektdatei eingetragen Form.

Wenn ich mit einer anderen Form starten will, tausche ich die dort entsprechend aus.
Ansonsten hat der User doch keine Möglichkeit, die (grundlegende) Initialisierungsreihenfolge zu ändern.
.... oder ?

Im meinem Proggy wird OnActivate auch definitiv nicht irgendwie im Programm (aus versehen) "fremdgestartet". Alles zig mal geprüft.
Nehme ich das im OI raus, wirds auch nicht aufgerufen.

Ich hab nun folgendes gemacht:

Wie gesagt neues Projekt mit Standard-Grundstruktur zeigt diesen Fehler (logo ?!) nicht.

Die MainForm aus meinem ursprüglichen Projekt reinkopiert (PAS & DFM):
-> Fehler wieder da !
Das liegt also an der Form, nicht an den Projekteinstellungen ? Wo ? Ich finde absolut nchts.

Dann habe ich im neuen Projekt noch mal eine neue MainForm angelegt.
Die DFM sieht zwar m.M.n. auch "normal" aus und es steht auch dort NUR EINMAL OnActivate drin - ich habe die DFM aber sicherheitshalber nicht nicht kopiert, sondern mit Copy|Paste nur den Inhalt (also quasi neu bestückt).

Den Code habe ich Proc für Proc einzeln rüberkopiert und jeweils komiliert um zu sehen, wann dieses Init-Prob wieder auftritt.

ES TRITT NICHT WIEDER AUF !
Hab nun eine exakte Kopie der Form Zeile für Zeile sowie auch von der Darstellung.
Es lag also nicht am Code oder ggf. irgendwelchen obskuren Elementen auf der Form oder an irgendwelchen Event-Aufrufen.
Alles lüppt wie gewohnt und bis vorgestern auch gelaufen.
Nur die org. Form zeigt dieses sehr merkwürdige Verhalten.

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

Registriert seit: 12. Jan 2019
Ort: Hessen
711 Beiträge
 
Delphi 12 Athens
 
#7

AW: Initialisierung falsch !

  Alt 21. Aug 2022, 12:33

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

  OnPaint := nil; Damit wird der Handler nur einmal aufgerufen.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Initialisierung falsch !

  Alt 21. Aug 2022, 13:16
... 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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Initialisierung falsch !

  Alt 21. Aug 2022, 13:51
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.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (21. Aug 2022 um 13:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Initialisierung falsch !

  Alt 21. Aug 2022, 14:13
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 ...)
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:36 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 by Thomas Breitkreuz