Das Funktioniert bei mir nicht richtig. Ich erhalte einen EIntfCastError, Interface not supported.
Eine
GUID habe ich allerdings beim Private-Interface angegeben.
Fehlt da noch etwas. Die Datentypen sollte ja kein Problem sein.
Tom
Zitat von
shmia:
Zitat von
tgoessi:
Natürlich könnte ich auch ein Interface für diese Funktion definieren, aber dies macht keinen Sinn, da die Funktion nicht von Extern aufgerufen werden soll.
Doch, ein 2. Interface wäre der richtige Weg.
Dieses [private] Interface wird aber nicht im TLB-Editor, sondern direkt im Sourcecode deklariert:
Delphi-Quellcode:
IMyCollectionSetup = Interface(IUnknown)
['{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}']
procedure SetConfig(const filename:string);
end;
Da dieses Interface von IUnknown abgeleitet ist, kannst alle Delphi-Datentypen benutzen und brauchst kein SafeCall.
Du solltest eine
GUID im Interface angeben, damit die Umwandlung mit
as klappt:
(FISetupData as IMyCollectionSetup).SetConfig(...);