![]() |
DLL richtig beenden
Hallo,
zuerst mein Quelltext:
Delphi-Quellcode:
Das klappt auch soweit ganz Prima, die Form wird aufgerufen, aber sobald ich die Form beenden will bekomme ich immer einen Fehler an Adresse "xy".
Procedure Artikel_Neu;
var Form_anlegen : TForm_Anlegen; BEGIN Form_Anlegen := TForm_Anlegen.Create(NIL); Try Form_Anlegen.Showmodal; Finally Form_Anlegen.Release; End; END; Ich habe es versucht mit "Form_Anlegen.Release" oder auch einfach nur mit Exit, mit "Form_Close" gehts auch net und mit Hide bleibt es ja immernoch da. Wie beende ich nun das DLL Formular richtig ? mfg Tommy82 |
Re: DLL richtig beenden
Versuch mal anstatt Form_Anlegen.Release; ein Form_Anlegen.Free;
|
Re: DLL richtig beenden
Klassen werden mit "VarName.Free" freigegeben. :)
Prüfe, ob du im Programm und in der DLL die gleichen Aufrufkonventionen gesetzt hast (z.B. stdcall). |
Re: DLL richtig beenden
Hallo,
danke für die schnellen Antworten. 1) Habe jetzt mal das release gegen das Free getauscht. Aufrufk. sind gleich (stdCall). Der Fehler kommt immernoch. Welchen befehl gebe ich dazu, dass er das Form schließt ? Bei Form_anlegen.free tut sich nix, rest wieder Fehler. mfg Tommy82 |
Re: DLL richtig beenden
Keiner eine Lösung ?
mfg Tommy82 |
Re: DLL richtig beenden
Erzeugst du irgendwelche Komponenten auf deinem Formular, die nicht wieder freigegeben werden?
Tritt der Fehelr auch auf, wenn du ein komplett neunes, leeres Formular anzeigst? Geh mal mit dem Debugger durch und prüfe, an welcher Stelle der Fehler genau auftritt. Beim "Free()"? Beim "end;?" Woanders? |
Re: DLL richtig beenden
Wieso ist die Form ueberhaupt in einer DLL? Benutzt du ShareMem?
|
Re: DLL richtig beenden
Inwiefern hat dein Code mit "DLL richtig beenden" etwas zu tun?
|
Re: DLL richtig beenden
Ich habe ein leeres Formular mal spaßeshalber benutzt, selbes Phänomen.
DLL (Aufruf des Formulars)
Delphi-Quellcode:
DLL (Beenden des Formulars)
Procedure TestDll_Start;
var Form1 : TForm1; BEGIN Form1 := TForm1.Create(NIL); Form1.ShowModal; END; exports TestDll_Start; begin end.
Delphi-Quellcode:
nach dem ich auf den Beenden Button geklickt habe, bekomm eich einen Adress-Fehler.
procedure TForm1.Button1Click(Sender: TObject);
begin Form1.Free; end; Schon probiert :
Delphi-Quellcode:
.. aber das geht auch nicht.
Procedure TestDll_Start;
var Form1 : TForm1; BEGIN Form1 := TForm1.Create(NIL); Try Form1.ShowModal; Finally Form1.Release; END; END; exports TestDll_Start; begin end. Ich möchte das Formular gerne in eine DLL auslagern, da ich dieses Formular : a) in mehreren Programmen verwenden möchte b) ein Update des Formulars schneller möglich ist (ohne das Programm neu zu schreiben) Nur sobald ich das Formular beende, bekomme ich immer : Zugriffsverletzung bei Adresse 0036D875 in Modul 'TestDll.dll'. Lesen von Adresse 00000000". Wie kann ich nun das Formular beenden ohne einen Fehler zu bekommen? mfg Tommy82 |
Re: DLL richtig beenden
Die Form kann sich doch nicht selbst freigeben. Und hast du mal ein leeres Formular benutzt mit dem Code den du vorher hattest. Also ShowModal + Form.free hintereinander?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 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-2025 by Thomas Breitkreuz