Hallo,
ich habe eine
DLL in C# erstellt, die ein
COM-Objekt mit diversen Funktionen enthält:
Code:
namespace MeinComObjekt
{
[
Guid("258FDBD3-7778-400f-B161-BA63CBAC2A03")]
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IEnvironment
{
/* Öffentliche Methoden: */
bool Initialize_bool(uint Reserved_u32);
string GetActiveProjectGUID_str();
// usw.
}
}
Zu diesem
COM-Interface gibt es noch eine Klasse, welche die Funktionen implementiert.
Der Aufruf der Funktionen über Eary-Binding klappt, d.h. wenn ich mir von Delphi eine TLB-Datei generieren lassen, kann ich die Funktionen aufrufen.
Wenn ich versuche das Ganze mit Delphi 2007 über Late-Binding anzusprechen, und so soll es später im Programm auch erfolgen, funktioniert der Aufruf sämtlicher Funktionen mit Ausnahme derjenigen Funktionen, die keine Parameter erwarten, wie z. B. GetActiveProjectGUID_str();.
Delphi-Quellcode:
var
Obj: Variant;
begin
Obj := CreateOleObject('MeinComObjekt.Environment');
if Obj.aftInitialize_bool(0) then
begin
ShowMessage(Obj.aftGetDLLVersion_str());
end
else
begin
ShowMessage('Initialisierung fehlgeschlagen!');
end;
Die Fehlermeldung die ich beim Aufruf bekomme ist vom Typ EOleSysError und lautet:
"Unzulässige Parameteranzahl"
Aufrufe aus einem VBS-Skript klappen dagegen hervorragend, d. h. die Implementierung im
Com-Objekt selber scheint zu stimmen.
Hat jemand eine Idee, weshalb der Aufruf aus Delphi scheitert?
Grüße
Dawn