Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Form verursacht beim schließen einen Fehler. (https://www.delphipraxis.net/174671-form-verursacht-beim-schliessen-einen-fehler.html)

Getox 4. Mai 2013 16:53

Delphi-Version: 2007

Form verursacht beim schließen einen Fehler.
 
Hallo,

Ich bin grade dabei mir ein Programm zu basteln, bei dem ich zum erfassen relevanter Daten ein Form mit Eingabefeldern zur Verfügung stellen muss.

Dieses erstelle ich so:

Delphi-Quellcode:
procedure tClientManager.NewClient;
var
  GUI: tForm3;
begin
  Gui := tForm3.Create(application);
  try
    Gui.fClientmanager := self;
    Gui.ShowModal;
  finally
    Gui.Free;
  end;
Und wenn ich auf das "X" dieser Eingabemaske drücke und auch wenn ich meinen Abbrechen-Button (macht nur "close;") bekomme ich eine Fehlermeldung "Zugriffsverletzung bei Adresse bla in Modul bla" :(

Hat jemand eine Idee was das sein könnte?

Klaus01 4. Mai 2013 16:57

AW: Form verursacht beim schließen einen Fehler.
 
Hallo,

Formen die mit showModal geöffnet sind werden in der Regel
mit dem Setzen des modalResults geschlossen.
Du schliesst die Form und gibst sie im Finally nochmals frei.

Grüße
Klaus

Getox 4. Mai 2013 16:59

AW: Form verursacht beim schließen einen Fehler.
 
Ich hab das Free im finally auskommentiert und der Fehler kommt immer noch.

Getox 4. Mai 2013 17:11

AW: Form verursacht beim schließen einen Fehler.
 
Kann das daran liegen, dass ich zur selben Zeit 2 Fenster mit Showmodal auf habe?

Uwe Raabe 4. Mai 2013 17:13

AW: Form verursacht beim schließen einen Fehler.
 
Zitat:

Zitat von Klaus01 (Beitrag 1214127)
Formen die mit showModal geöffnet sind werden in der Regel
mit dem Setzen des modalResults geschlossen.
Du schliesst die Form und gibst sie im Finally nochmals frei.

Close und Free bei einem Form sind nicht dasselbe. Lediglich wenn das Form im OnClose-Event als Action caFree setzt, wird das Form bei nächster Gelegenheit freigegeben. Ansonsten wird das Form bei einem Close lediglich unsichtbar gemacht, aber nicht freigegeben. Das try-finally mit dem Free ist also eigentlich korrekt.

Der Fehler liegt offensichtlich außerhalb des für uns sichtbaren Codes.

Uwe Raabe 4. Mai 2013 17:14

AW: Form verursacht beim schließen einen Fehler.
 
Zitat:

Zitat von Getox (Beitrag 1214129)
Kann das daran liegen, dass ich zur selben Zeit 2 Fenster mit Showmodal auf habe?

Eigentlich nicht. Ein modales Form kann durchaus ein anderes Form modal aufrufen.

Getox 4. Mai 2013 17:15

AW: Form verursacht beim schließen einen Fehler.
 
hm... ich hab grad auch noch mal ein komplett leeres Form erstellt und anstelle der normalen Eingabemaske aufgerufen. Auch das kommt der Fehler...

Mathematiker 4. Mai 2013 17:45

AW: Form verursacht beim schließen einen Fehler.
 
Hallo,
in meiner Hilfe zu "free" steht:
Zitat:

To free a form, call its Release method, which destroys the form and releases the memory allocated for it after all its event handlers and those of the components it contains are through executing.
Zum Schließen einer Form verwende ich immer form1.release und nicht form1.free.

Beste Grüße
Mathematiker

Bummi 4. Mai 2013 18:09

AW: Form verursacht beim schließen einen Fehler.
 
Auch wenn Du Release immer verwenden kannst, ist es in dem gezeigten Fall nicht nötig (das Problem) da die EventHandler nach dem Showmodal ja "durch" sind.

Release macht nichts anderes als ein PostMessage mit CM_RELEASE aufzurufen, welches dann nach dem abarbeiten der Events Free aufruft.

Uwe Raabe 4. Mai 2013 22:00

AW: Form verursacht beim schließen einen Fehler.
 
Zitat:

Zitat von Getox (Beitrag 1214132)
hm... ich hab grad auch noch mal ein komplett leeres Form erstellt und anstelle der normalen Eingabemaske aufgerufen. Auch das kommt der Fehler...

An welcher Code-Zeile genau kommt denn der Fehler?


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