ActiveX Übergabeparameter
-
Hallo Leute,
ich habe ein ActiveX in C++ programmiert.
Dieses ActiveX soll in Delphi benutzt werden.
Mein ActiveX soll eine Funktion zur Verfügung stellen, welche aus delphi aufgerufen werden kann und einen Übergabeparameter hat.Init(BSTR* test);
<<test>> soll in C++ verändert werden und nach Ausführung im ActiveX im Delphi
Hauptprogramm verfügbar sein.Geht das mit einem BSTR*?
Oder soll ich das anders machen?
Würde mich sehr auf eine konstruktive Meinung freuen.
-
Ja geht. Du mußt den BSTR* im .idl als [in,out] deklarieren. Wenn du ihn änderst, mußt du den alten WEert freigeben und den neuen allozieren:
STDMETHOD CThingie::Init(BSTR * test) { if (test == NULL) return E_POINTER; // ... SysFreeString(*test); *test = SysAllocString(L"some new stuff"); // ... }
-
Danke,
hat funktioniert.
Eine Frage diesbezüglich hätte ich noch.
Wie kann ich ich ein IStream übergeben?
-
reinzu als IStream *, rauszu oder in/out als IStream **
(und bei in/out das gleiche pattern: neuen IStream addrefen, alten IStream releasen)Ich hab aber keine Ahnung wie du im Delphi zu einem IStream kommst
-
Ich versuch mal meine Applikation zu erklären.
Ich möchte ein XML file von Delphi über die Schnittstelle zu mein C++ ActiveX transferieren.
Dies würde ich gerne als IStream übergeben und danch in C++ zurückladen, das XML file verändern und wieder zurück zu Delphi.
Oder geht das besser anders?