![]() |
Probleme beim Form schließen mit neuem Delphi 10.4.2
Moin,
ich habe diese Woche mein Delphi von 10.4.1 auf 10.4.2 (insklusive der drei Patches) geupdatet und habe seitdem ein gravierendes Problem, das mir Kopfzerbrechen bereitet: Schließe ich eine fast beliebige Form, so bewirkt das, dass sich das gesamte Programm schließt, aber der Prozess in solch einer Form weiterläuft, dass man ihn im Taskmanager killen muss. Lässt man das ganze im Debugger mit aktivierten Sprachexceptions ablaufen, so passiert dasselbe, ohne dass eine Exception auftritt, nur dass in diesem Fall in der Ausgabe "Thread-Ende" angezeigt wird, das Programm geschlossen ist, aber der Debugger immer noch läuft, bis man ihn per STRG + F2 abbricht. Vor dem Update auf 10.4.2 hat alles problemlos funktioniert. Nach dem bisherigen Rumprobieren sind mir folgende Dinge aufgefallen:
Momentan sieht das Ganze so aus, als wären die Styles, welche aber bearbeitete vorgefertigte Delphi-Styles sind, die Ursache. Das macht aber irgendwie wenig Sinn... Hat irgendjemand ne Ahnung, was das sein könnte oder vielleicht sogar ähnliche Probleme gehabt? |
AW: Probleme beim Form schließen mit neuem Delphi 10.4.2
UPDATE:
Es scheint so, als wäre das Ganze schon als Fehler reported: ![]() |
AW: Probleme beim Form schließen mit neuem Delphi 10.4.2
Es scheint so, als hätte ich einen Workaround gefunden...
Diese Konstruktion löst den Fehler aus:
Code:
Diese nicht:
Form.Create
Form.ShowModal Form.Release Form := Nil
Code:
D.h. Free anstatt Release funktioniert.
Form.Create
Form.ShowModal Form.Free Form := Nil Man korrigiere mich, sollte ich falsch liegen, aber ein Form.Free nach einem ShowModal sollte in keinem Fall ein Problem sein, oder gibt es Situationen, in denen damit dennoch etwas schiefgehen kann? |
AW: Probleme beim Form schließen mit neuem Delphi 10.4.2
Hallo,
ich habe noch nie Form.Release benutzt. Mag sein, dass es älteren Delphi-Versionen funktioniert hat, aber komisch sieht der Quellcode mit dem Release schon aus. Ah ja die Frage: Ein Form.Free hat bei mir noch nie einen Fehler erzeugt. Und wenn danach eh ein nil folgt -> FreeAndNil(FormX) |
AW: Probleme beim Form schließen mit neuem Delphi 10.4.2
Release bietet sich an, wenn du das Form in einem Eventhandler freigeben willst, was bei einem Free ungefähr einem Absägen des Astes entspricht auf dem man gerade sitzt.
Das Release sorgt dafür, dass vor der Freigabe erst der aktuelle Event beendet wird und auch alle anderen Messages für das Form abgearbeitet werden. Release wird z.B. auch verwendet, wenn in einem FormClose-Event der Parameter Action auf caFree gesetzt wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 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-2025 by Thomas Breitkreuz