Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Probleme beim Form schließen mit neuem Delphi 10.4.2 (https://www.delphipraxis.net/207877-probleme-beim-form-schliessen-mit-neuem-delphi-10-4-2-a.html)

AuronTLG 11. Mai 2021 14:39

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:
  • Das Problem tritt grundsätzlich nur dann auf, wenn man die Form über den Systembutton schließt, NICHT aber, wenn man ESC drückt.
  • Das Problem tritt in bestimmten Forms nicht auf, ohne dass dafür ein besonderer Grund oder Zusammenhang ersichtlich wäre.
  • Das Programm verwendet Styles. Deaktiviert man diese, d.h. durch "TStyleManager.TrySetStyle" auskommentieren, so funktioniert alles. Die Styles beeinflussen auch das Aussehen der Systembuttons.

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?

AuronTLG 11. Mai 2021 15:21

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: https://quality.embarcadero.com/browse/RSP-33848

AuronTLG 18. Mai 2021 14:40

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:
Form.Create
Form.ShowModal
Form.Release
Form := Nil
Diese nicht:

Code:
Form.Create
Form.ShowModal
Form.Free
Form := Nil
D.h. Free anstatt Release funktioniert.
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?

hoika 18. Mai 2021 15:21

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)

Uwe Raabe 18. Mai 2021 15:37

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 19:59 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