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 Form wirklich beenden (https://www.delphipraxis.net/73411-form-wirklich-beenden.html)

Flippo 17. Jul 2006 21:00


Form wirklich beenden
 
Hi,
ich habe folgendes Problem in einer Dll habe ich eine 2te unit für meine form. Die Form wird in einer Prozedur erstellt und beendet. Klappt auch wunderbar... beim ersten mal beim zweiten mal bekomme ich einen "abstrakten Fehler" gemeldet. Hab das mal ausprobiert, wenn ich das formcreate so auslagere das es nicht in der Prozedur liegt kann ich die prozedur problemlos mehrere male aufrufen. Nur kann ich das so nicht machen weil ich dann kein Ereignis habe um die form zu schließen und dann ein Fehler am Ende der gesamten Anwendung habe.

Hier der Code damit meine wirren Erklärungsversuche evtl. besser verstanden werden:
Delphi-Quellcode:
function TPlugInChild.GetNeededParams:string;
begin
   Form1:=TForm1.Create(Form1);
   form1.visible:=true;
   repeat
   Sleep(100);
   application.processmessages;
   until form1.visible=false;
   form1.destroy; //(habe auch schon free und freeinstance ausprobiert )
   if unit1.aufgabe<>'' then Result:=unit1.Aufgabe else result:='Error';
end;
Also ich glaube das Problem liegt daran, dass die Form mit destroy irgendwie doch nochnicht ganz erntfernt ist, weshalb beim zweiten mal create die alte und die neue form den fehler verursachen oder sowas

Wär für hilfe echt dankbar

MFG

Flippo

Flippo 17. Jul 2006 21:05

Re: Form wirklich beenden
 
möchte mal wissen warum ich immer Ewigkeiten suche und dann die Lösung eine Minute nachdem ich in ein Forum poste rausfinde... also wer das Problem auchmal hat ich hab einfach Form1:=TForm1.Create(Form1); in Form1:=TForm1.Create(nil); geändert.

mkinzler 17. Jul 2006 21:05

Re: Form wirklich beenden
 
Versuchs mal mit .FreeAndNil

SirThornberry 17. Jul 2006 21:05

Re: Form wirklich beenden
 
ich vermute den Fehler hier:
Delphi-Quellcode:
Form1:=TForm1.Create(Form1);
ich hab das Gefühl du weißt nicht wirklich was du da machst.
Beim ersten Aufruf ist "Form1" wohl noch "nil". Beim zweiten Aufruf zeigt "Form1" auf den Speicherbereich wo "Form1" beim letzten erzeugen lag. Aber inzwischen zeigt es nur noch dorthin aber das Object gibt es nichtmehr. Du übergibst also ein ungültiges Object. Übergebe anstelle von "Form1" lieber "nil" oder mach dich kundig was der Parameter überhaupt für einen Sinn hat bevor du Ihn falsch benutzt.

Flippo 17. Jul 2006 21:08

Re: Form wirklich beenden
 
naja bei vielen Sachen ist es tatsächlich so das ich noch nicht so recht weiss was ich da mache :stupid: , weil ich halt meistens für mich neue Sachen ausprobiere, aber da hättichs aber besser wissen können... danke trotzdem


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