Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Application.CreateForm hängt (https://www.delphipraxis.net/208210-application-createform-haengt.html)

jaenicke 28. Jun 2021 06:53

AW: Application.CreateForm hängt
 
Zitat:

Zitat von lxo (Beitrag 1491574)
Wie himitsu bereits sagt, vermute ich auch es liegt an Datenbankkomponenten oder irgendwelchen anderen Komponenten die noch nebenherlaufen.

Dann solltest du das aber auch im Stacktrace des Hauptthreads sehen wie schon geschrieben, wenn du auf Pause drückst während der Wartezeit.

haentschman 28. Jun 2021 06:54

AW: Application.CreateForm hängt
 
Moin...:P
Zitat:

Ja, aber es dauert schon 15 Sekunden bis ich ins Create komme.
Vor der ersten Zeile des OnCreate werden alle Komponenten "initialisiert". Deshalb die Info auf die Prüfung der Properties usw. :zwinker:
Zitat:

Datenbankkomponenten auf der Form? (mit falschen Connectiondaten)
Das ist der Klassiker. In der Connection zur Designzeit Active = True gesetzt. :zwinker:

lxo 28. Jun 2021 07:06

AW: Application.CreateForm hängt
 
Zitat:

Zitat von jaenicke (Beitrag 1491575)
Zitat:

Zitat von lxo (Beitrag 1491574)
Wie himitsu bereits sagt, vermute ich auch es liegt an Datenbankkomponenten oder irgendwelchen anderen Komponenten die noch nebenherlaufen.

Dann solltest du das aber auch im Stacktrace des Hauptthreads sehen wie schon geschrieben, wenn du auf Pause drückst während der Wartezeit.

Wenn ich während der Wartezeit anhalte, komme ich in die CPU-Ansicht und der hält bei "ntdll.RtlUserThreadStart", von da aus weiter in "ntdll.LdrInitializeThunk"

jaenicke 28. Jun 2021 07:14

AW: Application.CreateForm hängt
 
Zitat:

Zitat von lxo (Beitrag 1491577)
Wenn ich während der Wartezeit anhalte, komme ich in die CPU-Ansicht und der hält bei "ntdll.RtlUserThreadStart", von da aus weiter in "ntdll.LdrInitializeThunk"

Das ist vermutlich nicht der Stacktrace des Hauptthreads. Nach dem Anhalten musst du schon erst dorthin wechseln (in der Threadansicht doppelt auf den ersten Thread klicken).

stifflersmom 28. Jun 2021 09:36

AW: Application.CreateForm hängt
 
Zitat:

Zitat von haentschman (Beitrag 1491576)
Moin...:P
Das ist der Klassiker. In der Connection zur Designzeit Active = True gesetzt. :zwinker:

Und genau dafür ist GExpert mit den Set Component Propertiers Gold wert!
Dort einfach die gewünschte Eigenschaft konfgurieren, z.B.
Delphi-Quellcode:
Component.Connected := false;
und schon wird beim Compilieren das automatisch gesetzt.

Uwe Raabe 28. Jun 2021 10:19

AW: Application.CreateForm hängt
 
FireDAC bietet da von Haus aus noch eine andere Möglichkeit: Bei dem ConnectedStoredUsage einfach das auRunTime rausnehmen, dann wird die Connection zur Laufzeit auch nicht aktiviert. (Man kann zusätzlich auch das auDesignTime rausnehmen, dann wird die Connection auch beim nächsten mal in der IDE nicht verbunden.)

Zur Laufzeit kann man das auch pauschal für alle Connections vorgeben, wenn man vor dem Laden des ersten Forms oder Datenmoduls ein
Delphi-Quellcode:
FDManager.ActiveStoredUsage := []
einfügt (auDesignTime ist zur Laufzeit eh irrelevant).

Ergänzend müssen dann auch alle verbundenen DataSets (z.B. TFDQuery) das ActiveStoredUsage entsprechend gesetzt haben, da sonst beim Aktivieren des DataSets implizit auch die Connection geöffnet wird. Das lässt sich zur Designzeit relativ einfach über ein Multi-Select einstellen.

dummzeuch 28. Jun 2021 12:25

AW: Application.CreateForm hängt
 
Mir fehlt in der ganzen Diskussion immernoch der einfachste Ansatz: Mit Debug DCUs compilieren und im Debugger durchsteppen.

Ich hatte das ziemlich am Anfang vorgeschlagen.

Wenn der Threadersteller das gemacht hätte, wüsste er jezt, wonach er schauen muss, aber es ist wohl zu kompliziert.

lxo 28. Jun 2021 12:41

AW: Application.CreateForm hängt
 
Zitat:

Zitat von dummzeuch (Beitrag 1491590)
Mir fehlt in der ganzen Diskussion immernoch der einfachste Ansatz: Mit Debug DCUs compilieren und im Debugger durchsteppen.

Ich hatte das ziemlich am Anfang vorgeschlagen.

Wenn der Threadersteller das gemacht hätte, wüsste er jezt, wonach er schauen muss, aber es ist wohl zu kompliziert.

Den Ansatz werde ich auch weiter verfolgen. Komme heute leider nur noch dazu mich mit dem Problem auseinander zu setzen.
Vielen Dank schonmal für die zahlreichen Tipps.

himitsu 28. Jun 2021 12:49

AW: Application.CreateForm hängt
 
Zitat:

Zitat von lxo (Beitrag 1491577)
Wenn ich während der Wartezeit anhalte, komme ich in die CPU-Ansicht und der hält bei "ntdll.RtlUserThreadStart", von da aus weiter in "ntdll.LdrInitializeThunk"

Der Debugger hält nicht immer im Hauptthrerad.
Meistens ist es der erste/oberste Thread in der ThreadListe (Strg+Alt+T) -> Jenen doppelt anklicken, wenn nicht aktiv.

Und eventuell auch noch ein/mehrmals auf F7 oder F8.
Wenn der aktuelle Stack nichts "schönes" anzeigt, noch etwas weiter und hoffen es kommt was Besseres, auf dem Weg weiter/zurück.

lxo 28. Jun 2021 13:03

AW: Application.CreateForm hängt
 
Zitat:

Zitat von himitsu (Beitrag 1491594)
Zitat:

Zitat von lxo (Beitrag 1491577)
Wenn ich während der Wartezeit anhalte, komme ich in die CPU-Ansicht und der hält bei "ntdll.RtlUserThreadStart", von da aus weiter in "ntdll.LdrInitializeThunk"

Der Debugger hält nicht immer im Hauptthrerad.
Meistens ist es der erste/oberste Thread in der ThreadListe (Strg+Alt+T) -> Jenen doppelt anklicken, wenn nicht aktiv.

Und eventuell auch noch ein/mehrmals auf F7 oder F8.
Wenn der aktuelle Stack nichts "schönes" anzeigt, noch etwas weiter und hoffen es kommt was Besseres, auf dem Weg weiter/zurück.

Ich hab den Übeltäter, FileExists auf ein ungültigen Netzwerkpfad. Deswegen kommt das auch nicht bei jedem :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 Uhr.
Seite 2 von 3     12 3      

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