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?


Anmelden zum Antworten