Zitat von
hoika:
Hallo,
> ich seh nix
beim Verlassen des Gültigkeitsbereiches eines
Interfaces wird nicht nur das Interface "gelöscht",
sondern auch das betroffene Objekt gelöscht.
Abhilfe bringt nur _AddRef und Release zu überschreiben
und dort nichts tun (Referenzzählung deaktivieren).
das hab ich ja gemacht...
Delphi-Quellcode:
//anwendungsseite
function TApp._AddRef: Integer; stdcall;
begin
//
end;
function TApp._Release: Integer; stdcall;
begin
//
end;
function TMemoWrapper._AddRef: Integer;
begin
//
end;
function TMemoWrapper._release: Integer;
begin
//
end;
//plugin-seite
function TPlugin._AddRef: Integer;
begin
//
end;
function TPlugin._release: Integer;
begin
//
end;
die variable app:TApp ist im Gültigkeitsbereich der form, ist auch im destroy des forms korrekt gesetzt (inkl. Interface auf Ieditor), wo es dann freigegeben wird. Es kommt auch keine nil-pointer
exception beim beenden mehr...
muss ich vor dem freigeben der
dll das TPlugin-Objekt irgendwie freigeben, oder reicht das per nil-Zuweisung beim Interface anwendungsseitig? (habs zumindest nicht ohne
AV hinbekommen)
Zitat von
hoika:
Ein Interface wird normalerweise freigegeben,
wenn es auf NIL gesetzt wird.
Probier mal mit memcheck, ob das reicht.
Ich hatte nach dem einen Test so die "Schnauze voll",
dass ich erst wieder was mit machen werden,
wenn delphi.net bei uns ansteht.
vielleicht findet ja auch jemand anderes Lust, der sich auskennt
gibt sicher ne ganz triviale lösung...so umfangreich ist es ja (noch) nicht...kanns nur nicht richtig nachvollziehen, warum die
AV kommt. Muss man evtl irgendwas festes bei den beiden funktionen zurückgeben? weil so sind die ja undefiniert...
Gruß Frank