Hallo,

Zitat von
barf00s:
Delphi-Quellcode:
var
xInterface: IWhatever;
begin
if Assigned(xInterface) then
xInterface := nil;
end;
Delphi-Quellcode:
var
xObj: TWhatever;
begin
xObj := TWhatever.Create As IWhatever;
try
finally
FreeAndNil(xObj);
end;
end;
Das sind beides leider keine Lösungen für mein Problem. Ich weiss, dass ich die Interfaces freigeben muss, nur nicht wo. Ich hab ein
MDI-Fenster, das die Objekte erstellt und den PlugIns sowie diversen Paletten zur Verfügung stellt. Die Objekte werden in OnCreate erzeugt und in OnDestroy auf nil gesetzt. Irgendwo dazwischen werden an allen möglichen Stellen die Objekte verwendet bzw. manipuliert, das sind einige Hundert Stellen im Quellcode. So wie es aussieht muss ich dies Stellen alle untersuchen und die Interfaces da freigeben, wo ichs vergessen hab.
Als das noch einfache Delphi-Objekte waren war das ja egal, bzw. Delphi hat sogar gemeckert (Hinweis:...wird nie benutzt) wenn man das Objekt auf nil gesetzt hat. Warum bringt Delphi keine Warnung, wenn man ein Interface benutzt und nicht wieder freigibt?
Noch was: Wenn ich mir ein Interface so hole
Delphi-Quellcode:
if (XXX as IMyInterface).IrgendeinProperty = True then
...
wird dann das Interface von Delphi automatisch wieder freigegeben?
Gruß
xaromz