AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exception bei Freigabe von Form

Ein Thema von Balu der Bär · begonnen am 18. Jul 2006 · letzter Beitrag vom 18. Jul 2006
Antwort Antwort
Balu der Bär
(Gast)

n/a Beiträge
 
#1

Exception bei Freigabe von Form

  Alt 18. Jul 2006, 21:45
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:
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;

....
Wenn ich die Form an anderen Stellen freigebe bekomme ich auch keinen Fehler, jemand ne Idee?

Danke euch.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Exception bei Freigabe von Form

  Alt 18. Jul 2006, 21:53
Wo befindet sich der gezeigte Code? Zufällig in der Klasse tscStartMenu?
Markus Kinzler
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#3

Re: Exception bei Freigabe von Form

  Alt 18. Jul 2006, 21:55
Jupp.

Aber wie gesagt an anderen Stelle auch in tscStartMenu geht es problemlos.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Exception bei Freigabe von Form

  Alt 18. Jul 2006, 21:56
Bist du sicher?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: Exception bei Freigabe von Form

  Alt 18. Jul 2006, 21:56
Versuch mal TForm.Release
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#6

Re: Exception bei Freigabe von Form

  Alt 18. Jul 2006, 21:59
Zitat von mkinzler:
Bist du sicher?
Jupp, 100%.

Deshalb ist diese Exeption auch ein Rätsel für mich.

TForm.Release?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: Exception bei Freigabe von Form

  Alt 18. Jul 2006, 22:06
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.


  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#8

Re: Exception bei Freigabe von Form

  Alt 18. Jul 2006, 22:15
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.
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#9

Re: Exception bei Freigabe von Form

  Alt 18. Jul 2006, 22:21


Ich nehme alles zurück, ich hab den Fehler jetzt gefunden. Weiter unten im Code steht noch ein Menu.SelectedItem := nil; , da das Form ja aber nicht mehr existiert gibt es logischerweise die Exception.

Sorry.
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:26 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