Announcement

Collapse
No announcement yet.

Problem mit SAFEARRAY in COM-Komponente

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit SAFEARRAY in COM-Komponente

    Hallo liebe Kollegen,

    sorry, mir ist durchaus bewusst das ich mit meinem Problem eigentlich im Delphi-Forum nicht zu suchen habe, aber bei der BCB-Zunft war die Reaktion auf mein Posting leider nicht gerade überwältigend...
    Vielleicht kann mir jemand von euch helfen!

    Ich habe folgendes Problem:

    Ich muss ein Array von Variants von meinem Client an einen InProc-Server übergeben. Leider funktioniert es nicht so, wie ich gerne möchte! Wenn ich z.B ein Array mit 2 Variants übergebe, findet sich auf dem Server ein Speicherbereich von 32 Byte (korrekt!), allerdings alles mit NULLEN!
    Ich habe absolut keine Ahnung, wie ich das hinkriegen soll!

    Die Funktion ist im Server in IDL folgendermassen deklariert:

    [id(8), helpstring("method testParam")]
    HRESULT testParam([in] SAFEARRAY(VARIANT) pArray);

    Den Code hab ich mir vom Typbibliotheks-Editor generieren lassen!
    Auf der Client-Seite ist folgender Code:
    // ---
    pParamArray = ::SafeArrayCreate(VT_VARIANT, 1, rgsabound);
    if (NULL == pParamArray)
    {
    return E_OUTOFMEMORY;
    }

    pParamArray->rgsabound[0].lLbound = 0;
    pParamArray->rgsabound[0].cElements = 2;
    ::VariantInit(&rgVarParam[0]);
    ::VariantInit(&rgVarParam[1]);
    V_VT(&rgVarParam[0]) = VT_I4;
    V_VT(&rgVarParam[1]) = VT_I4;
    V_I4(&rgVarParam[0]) = 10;
    V_I4(&rgVarParam[1]) = 100;
    m_objScriptHost.testParam(pParamArray);
    // ---

    Weiss jemand, was ich falsch mache?

    Danke und viele Grüsse

    Reiner
Working...
X