AGB  ·  Datenschutz  ·  Impressum  







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

DLL richtig beenden

Ein Thema von Tommy82 · begonnen am 5. Apr 2007 · letzter Beitrag vom 10. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#1

DLL richtig beenden

  Alt 5. Apr 2007, 08:23
Hallo,

zuerst mein Quelltext:

Delphi-Quellcode:
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;
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".
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
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: DLL richtig beenden

  Alt 5. Apr 2007, 08:40
Versuch mal anstatt Form_Anlegen.Release; ein Form_Anlegen.Free;
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#3

Re: DLL richtig beenden

  Alt 5. Apr 2007, 08:41
Klassen werden mit "VarName.Free" freigegeben.

Prüfe, ob du im Programm und in der DLL die gleichen Aufrufkonventionen gesetzt hast (z.B. stdcall).
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#4

Re: DLL richtig beenden

  Alt 5. Apr 2007, 08:59
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
  Mit Zitat antworten Zitat
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#5

Re: DLL richtig beenden

  Alt 10. Apr 2007, 12:01
Keiner eine Lösung ?

mfg

Tommy82
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#6

Re: DLL richtig beenden

  Alt 10. Apr 2007, 12:09
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?
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: DLL richtig beenden

  Alt 10. Apr 2007, 12:16
Wieso ist die Form ueberhaupt in einer DLL? Benutzt du ShareMem?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#8

Re: DLL richtig beenden

  Alt 10. Apr 2007, 12:16
Inwiefern hat dein Code mit "DLL richtig beenden" etwas zu tun?
Thomas
  Mit Zitat antworten Zitat
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#9

Re: DLL richtig beenden

  Alt 10. Apr 2007, 17:21
Ich habe ein leeres Formular mal spaßeshalber benutzt, selbes Phänomen.

DLL (Aufruf des Formulars)
Delphi-Quellcode:
Procedure TestDll_Start;
var Form1 : TForm1;
BEGIN
 Form1 := TForm1.Create(NIL);
 Form1.ShowModal;
END;

exports
 TestDll_Start;

begin
end.
DLL (Beenden des Formulars)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Form1.Free;
end;
nach dem ich auf den Beenden Button geklickt habe, bekomm eich einen Adress-Fehler.

Schon probiert :
Delphi-Quellcode:
Procedure TestDll_Start;
var Form1 : TForm1;
BEGIN
 Form1 := TForm1.Create(NIL);
 Try
  Form1.ShowModal;
 Finally
  Form1.Release;
 END;
END;

exports
 TestDll_Start;

begin
end.
.. aber das geht auch nicht.

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
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#10

Re: DLL richtig beenden

  Alt 10. Apr 2007, 17:29
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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:55 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