AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Programm hängt sich im Create weg (es passiert nix mehr)

Programm hängt sich im Create weg (es passiert nix mehr)

Ein Thema von Maliko · begonnen am 23. Okt 2020 · letzter Beitrag vom 23. Okt 2020
Antwort Antwort
Maliko

Registriert seit: 20. Jun 2019
91 Beiträge
 
Delphi 10.3 Rio
 
#1

Programm hängt sich im Create weg (es passiert nix mehr)

  Alt 23. Okt 2020, 12:48
Moin,

ich hab momentan ein sehr merkwürdiges Problem. Und zwar habe ich eine Form, bei der das Programm sich jedes mal Weghängt, wenn ich versuche diese zu öffnen. Das Problem ist, dass es nicht crashed oder so sondern dass einfach gar nix mehr passiert. Das Fenster friert einfach ein und wenn ich zu Delphi wechsle, bekomme ich das Fenster auch nicht mehr in den Fordergrund (so wie normalerweise wenn ein Breakpoint aktiv ist).

Merkwürdigerweise handelt es sich bei der Codezeile die dafür sorgt um den Constructor (TUnit.Create(AOwner)). Ich hab mal versucht durch die VCL-Daten zu debuggen und bin letztenendes bei der Funktion InternalReadComponentRes (welche in der Funktion InitComponent als Unterfunktion von InitInheritedComponent aufgerufen wird) in der System.Classes gelandet, wo er scheinbar in eine Endlosschleife läuft (zumindest ruft er solange ich F7 drücke die Funktion immer wieder aufs neue auf).

Hat vielleicht irgendjemand eine Ahnung was da los ist? Die Form wird zentral von einer bestimmten Unit created und dann im gesamten Programm verwendet. Rufe ich die Form direkt über die Unit auf, in welcher sich der Creationbefehl befindet auf (also über Self.OeffneForm), dann funktioniert es einwandfrei. Rufe ich die Funktion aber ich var.OeffneForm auf, dann passiert das oben geschilderte.

Ich bin da grad echt etwas überfragt, weil dass ja scheinbar auch nicht mit meinem Code zusammenhängt, sondern in den VCL-Basisdateien passiert.

Danke euch schon einmal im Vorraus
Maliko
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
897 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Programm hängt sich im Create weg (es passiert nix mehr)

  Alt 23. Okt 2020, 12:58
Alles in der Methode auskommentieren, dann sollte es noch funktionieren. Dann stückweise wieder einkommentieren und schauen, wann es anfängt zu hängen.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Programm hängt sich im Create weg (es passiert nix mehr)

  Alt 23. Okt 2020, 13:00
Bitte konkretisiere das Problem.

Hängt sich Delphi auf oder das Programm?
Zur Designtime? Im Debugmodus? Zur Laufzeit ohne Debugging?
Werden eigene Komponenten genutzt oder Komponenten von Drittanbietern oder nur Delphi-Komponenten?

Welche Delphi-Version?

Das wird die Problematik vielleicht schon etwas besser eingrenzen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Maliko

Registriert seit: 20. Jun 2019
91 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Programm hängt sich im Create weg (es passiert nix mehr)

  Alt 23. Okt 2020, 13:03
Ich hab den Fehler gefunden. Der Fehler tritt scheinbar auf, wenn man versucht die Form im Multithreading zu öffnen. Wir haben eine Komponente namens TWarten, welche die Funktion über einen seperaten Thread aufruft. Wenn ich die Funktion direkt sequenziell aufrufe, dann funktioniert es. Es scheint also mit dem Thread zusammenzuhängen. Ich muss mich Montag mal mit dem Kollegen zusammensetzen, der die Klasse geschrieben hat.

Achso, das passiert immer. Sowohl im Debug als auch zur normalen Laufzeit.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#5

AW: Programm hängt sich im Create weg (es passiert nix mehr)

  Alt 23. Okt 2020, 13:13
Korrekt, die VCL-Komponenten selbst sind nicht thread-safe und müssen immer über den Hauptthread der Anwendung angesprochen/erstellt/etc. werden.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Programm hängt sich im Create weg (es passiert nix mehr)

  Alt 23. Okt 2020, 13:18
[edit]
OK, das mit dem Thread war natürlich eine etwas blöde Idee.
[/edit]


Es hängt also beil Lagen der DFM.

Da gibt es einmal InternalReadComponentRes mit TReader, welche die DFM einlesen, und das der Reihe nach und es gibt keine Wiederholungen.
Aber da drin werden auch Komponenten erstellt und Property gelesen geschrieben, also Contrucoren und Setter aufgerufen und dort wird es wohl irgendwo hängen bleiben.


Das Selbe, was vorhin mit dem Code vorgeschlagen wurde, kann man auch mit der DFM machen, also Komponenten/Property entfernen und schauen wann es wieder geht.
Im Delphi/FormDesigner oder mit einem Texteditor.

Dank SVN/Git/... lässt sich auch super einfach Zeugs entfernen und wiederherstellen.



PS: Wir haben inzwischen viele derartige Threaddinge wieder entfernt, also wo etwas im Thread läuft, aber der Mainthread darauf wartet ... da ist sowas eh nutzlos.

Wenn es sein muß, dann kann man im Thread auch eine NonVCL-Warteform anzeigen oder dort auf Tasten warten, um damit den Fortschritt anzuzeigen oder ein Abbrechen anzustoßen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

Geändert von himitsu (23. Okt 2020 um 13:24 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:45 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