![]() |
Exception bei Freigabe von Form
Moin,
ganz einfaches Problem eigentlich, der User klickt auf einen Button, daraufhin wird ein neues Form erzeugt und das alte beendet werden. Leider bekomme ich beim Freigeben der alten Form eine Access Violation. Weiß jemand warum?
Delphi-Quellcode:
Wenn ich die Form an anderen Stellen freigebe bekomme ich auch keinen Fehler, jemand ne Idee?
case Menu.SelectedItem.Index of
0 : begin OpenDialog1.Filter := 'TSC Speicherstand (*.tsc)|*.tsc'; if OpenDialog1.Execute then begin LoadMainSaveGame(OpenDialog1.FileName); Application.CreateForm(TtscMainGame, tscMainGame); tscMainGame.Show; tscStartMenu.Free; // <= hier kommt die Exception end; end; .... Danke euch. |
Re: Exception bei Freigabe von Form
Wo befindet sich der gezeigte Code? Zufällig in der Klasse tscStartMenu?
|
Re: Exception bei Freigabe von Form
Jupp.
Aber wie gesagt an anderen Stelle auch in tscStartMenu geht es problemlos. :gruebel: |
Re: Exception bei Freigabe von Form
Bist du sicher?
|
Re: Exception bei Freigabe von Form
Versuch mal TForm.Release ;)
|
Re: Exception bei Freigabe von Form
Zitat:
Deshalb ist diese Exeption auch ein Rätsel für mich. TForm.Release? :gruebel: |
Re: Exception bei Freigabe von Form
Ok, gehört schon zu TCustomForm ...
Delphi-Doku: Syntax [Delphi] procedure Release(); Beschreibung Mit Release können Sie das Formular aus dem Speicher entfernen. Release gibt das Formular erst frei, nachdem die Ausführung der Ereignisbehandlungsroutinen des Formulars und seiner untergeordneten Komponenten beendet ist. Die Methode stellt auch sicher, dass alle Botschaften in der Ereigniswarteschlange des Formulars vor dessen Freigabe bearbeitet werden. Jede Ereignisbehandlungsroutine für das Formular oder für dessen untergeordnete Objekte sollte Release anstelle von Free (Delphi) oder Delete (C++) benutzen. Ansonsten kann ein Speicherzugriffsfehler auftreten. Hinweis: Release gibt die Steuerung sofort an die aufrufende Routine zurück und wartet nicht, bis das Formular freigegeben wird. |
Re: Exception bei Freigabe von Form
Moin Julius,
danke mit .Release klappt es erstmal wie gewünscht. Jedoch gibt es jetzt ein anderes Problem, nämlich wenn ich jetzt tscMainGame schließe (das Form) wird die Applikation nicht beendet, der Task bleibt im Taskmanager stehn. Im OnClose des Forms MainGame beende ich tscIntro, welches als Hauptformular der Anwendung eingetragen ist. Leider scheint das aber nicht ausgeführt zu werden bzw. irgendwo anders sitzt immernoch ein weiterer Fehler. :-( |
Re: Exception bei Freigabe von Form
:oops:
Ich nehme alles zurück, ich hab den Fehler jetzt gefunden. Weiter unten im Code steht noch ein
Delphi-Quellcode:
, da das Form ja aber nicht mehr existiert gibt es logischerweise die Exception.
Menu.SelectedItem := nil;
Sorry. :oops: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 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 by Thomas Breitkreuz