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
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von TERWI
TERWI

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

Initialisierung falsch !

  Alt 20. Aug 2022, 20:00
Seit gestern zeigt mein Projekt ein sehr kurioses Verhalten.
Irgendwie kommt das FormCreate von LAV nicht zum richtigen Zeitpunkt
In MAIN.OnActivate wird LAV.DOINIT ausgeführt.
LAV.FormCreate kommt putzigerweise aber erst danach.
Das führt zu katastrophalen Initialisierungsfehlern !
Das LOG davon:
Code:
[19:21:45:934] [LOG - CREATE]: ... OK !
[19:21:45:934] [LOG - INIT]: ...
[19:21:45:934] [LOG - SETMODE]: W: True - F: True - FD:
[19:21:45:934] [LOG - SetLogWin]: Mode: True
[19:21:45:934] [LOG - SetLogFile]: ... YES
[19:21:46:018] [MAIN - CREATE]: ... begin
[19:21:46:018] [MAIN - LoadINI]: LOAD: F:\PRJx64\ZATTOO_LAV\ZATTOO.INI
[19:21:46:018] [MAIN - CREATE]: ... end
[19:21:46:018] [MAIN - ACTIVATE]: ... INIT MODULES ...
[19:21:46:018] [MAIN - SetVideoDisplayMode]: ... change-1
[19:21:46:018] [LAV - DoInit]: ...begin
[19:21:46:018] [LAV - DoInit]: ...end
[19:21:46:050] [LAV - CREATE]: ... begin
[19:21:46:050] [LAV - CREATE]: ... end
[19:23:12:274] [LAV - DESTROY]: ... start
[19:23:12:274] [LAV - DESTROY]: ... end
[19:23:12:290] [MAIN - DESTROY]: ... start
[19:23:12:290] [MAIN - DESTROY]: ... end
[19:23:12:290] [LOG - DESTROY]: LOGGER to be destoyed ...
[19:23:12:290] [LOG - SetLogWin]: Mode: False
Ich habe eine neues Projekt angelegt und exakt identisch aufgebaut.
Hier sieht das LOG korrekt aus.
So wie es sein sollte, kommen erst die beiden Creates der 2 Forms und dann das Activate der Main-Form mir dem Aufruf von LAV.DOINIT.
Code:
[19:47:13:869] [LOG - CREATE]: ... OK !
[19:47:13:869] [LOG - INIT]: ...
[19:47:13:869] [LOG - SETMODE]: W: True - F: True - FD:
[19:47:13:869] [LOG - SetLogWin]: Mode: True
[19:47:13:869] [LOG - SetLogFile]: ... YES
[19:47:13:891] [MAIN - CREATE]: ... begin
[19:47:13:891] [MAIN - CREATE]: ... end
[19:47:13:891] [LAV - CREATE]: ... begin
[19:47:13:891] [LAV - CREATE]: ... end
[19:47:13:907] [LAV - DoInit]: ...begin
[19:47:13:907] [LAV - DoInit]: ...end
[19:47:22:034] [LAV - DESTROY]: ... start
[19:47:22:034] [LAV - DESTROY]: ... end
[19:47:22:034] [MAIN - DESTROY]: ... start
[19:47:22:034] [MAIN - DESTROY]: ... end
[19:47:22:034] [LOG - DESTROY]: LOGGER to be destoyed ...
[19:47:22:034] [LOG - SetLogWin]: Mode: False
Wie kann das sein / kommen ?
Ich sehe und finde einfach keinen Fehler im Quelltext.
Trat gestern nachmittag urplötzlich auf.
... jede Mende Access-Violations weil Vars nicht initialisiert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: Initialisierung falsch !

  Alt 20. Aug 2022, 20:01
Ich sehe und finde einfach keinen Fehler im Quelltext.
Komisch, ich auch nicht...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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, 20:34
Die Quizfrsge ist ja: Warum wird (neuerdings) das FormCreate der 2. Form nicht vor dem OnActivate der 1. Form ausgeführt ?
Darauf habe ich doch im Compiler überhaupt keinen Einfluss.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#4

AW: Initialisierung falsch !

  Alt 20. Aug 2022, 20:38
Zitat:
Ich sehe und finde einfach keinen Fehler im Quelltext.
Die Quizfrage ist wohl eher und auf was Uwe Rabe hinaus wollte mit seinem Kommentar das er nun mal ohne Quelltext nichts sehen kann.
Ein LOG File reicht hierzu einfach nicht aus.
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

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

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
 
#6

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
 
#7

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.071 Beiträge
 
Delphi 12 Athens
 
#8

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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

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

n/a Beiträge
 
#9

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
 
#10

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
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 09:30 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