Was passiert den bei Load, PlgInstance und Unload?
Das Interfaceobject darf bei Unload noch nicht freigegeben werden. Innerhalb von Prozeduren/Methoden verwendete Interfaces werden möglicherweise erst beim Verlassen oder bei erneuter Zuweisung eines anderen Interfaceobject freigegeben.
Meine Vermutung, der Compiler erzeugt daraus im Prinzip das:
Delphi-Quellcode:
DummyInterfaceVariable := nil;
{Schleife begin}
Load; // hier wird das Interface erstellt
try
if Assigned(DummyInterfaceVariable) then
DummyInterfaceVariable._Release; // <- hier knallts beim 2.Durchlauf
DummyInterfaceVariable := PlgInstance;
if Assigned(DummyInterfaceVariable) then
DummyInterfaceVariable._AddRef;
InfoSplit := DummyInterfaceVariable.GetFileInfoMulti(Split);
finally
Unload(True); // <- hier wird das Object vermutlich unzulässig freigegeben
Split := nil;
end;
{Schleife end}
if Assigned(DummyInterfaceVariable) then
DummyInterfaceVariable._Release; // <- hier könnte es schon bei nur einem Durchlauf