Delphi-PRAXiS

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/)
-   -   Delphi Crash beim Beenden der Applikation (https://www.delphipraxis.net/145727-crash-beim-beenden-der-applikation.html)

Shark99 7. Jan 2010 02:39


Crash beim Beenden der Applikation
 
Hi!

Ich hab die letzten Stunden nach der Ursache für einen Programmcrash beim Beenden meiner Anwendung gesucht. Der Crash (Access Violation) ist leider keine Exception, ich bekomme zwar einen Stop vom Debugger, der ist aber irgendwo im Nirvana, d.h. Delphi zeigt mir mit [Stopped] an dass die App angehalten wurde, aber es gibt keinen Sprung zum Code der verantwortlich für den Stopp ist.

Nach viel hin und her habe ich bemerkt dass der Crash nur passiert wenn ich von der Mainform eine andere Form öffne und auf dieser sich eine bestimmte Komponente (TPlusMemo) befindet. Ohne diese Komponente beendet sich die Applikation ganz normal ohne Crash.

Ich hab durch viel herumprobieren eine Lösung gefunden, also das Crash Problem ist gelöst.

Allerdings verstehe ich nicht wieso gerade diese Lösung funktioniert und hoffe dass einer der Delphi Experten eine Erklärung hat.

Ich hab diese Zeile:

Delphi-Quellcode:
PropertiesForm := TPropertiesForm.Create(PropertiesForm);
durch diese ersetzt:

Delphi-Quellcode:
Application.CreateForm(TPropertiesForm, PropertiesForm);
und das Problem verschwand.

Wieso?

Tom 7. Jan 2010 05:25

Re: Crash beim Beenden der Applikation
 
Zitat:

Zitat von Shark99
Delphi-Quellcode:
PropertiesForm := TPropertiesForm.Create(PropertiesForm);

Der übergebene Parameter für create ist der "Owner". Der Owner einer Form kann aber schlecht die Form selber sein.

himitsu 7. Jan 2010 09:20

Re: Crash beim Beenden der Applikation
 
Zitat:

Zitat von Tom
Der übergebene Parameter für create ist der "Owner". Der Owner einer Form kann aber schlecht die Form selber sein.

Wobei es nichtmal die Form selber ist ... als Owner wird hier der "alte Wert" aus dieser Variable genommen.

Blup 7. Jan 2010 13:36

Re: Crash beim Beenden der Applikation
 
Wenn schon in dieser Form, dann so:
Delphi-Quellcode:
PropertiesForm := TPropertiesForm.Create(Application);


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 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