wie funktioniert VARIANT



  • Hallo zusammen,

    ich hab eine Hardware die ich ansprechen möchte. Es Liegt eine dll dabei die ich als Com-Objekt via Wrapper einbinden kann.
    Soweit funktioniert auch alles. Einige Funktionen benutzen aber Variant und ich bekomm einfach keine sinnvollen Daten zurück.

    Hier mal ein Auszug aus der Anleitung zu einer Funktion:

    Name:[c][c][/c][c]ScanUSB
    Parameters: [out] VARIANT* serialNumbers
    Use Scans the USB for all devices that are presently attached to the PC.
    <serialNumbers> is a pointer to a VARIANT containing an array of BSTR.
    

    Wie muss ich dem jetzt was übergeben damit ich die Seriennummer der Geräte zurück bekomme?

    mein Anzatz war ja:

    tagVARIANT Test[10];
    ScanUSB(Test);
    
    ListBox1->Items->Add(Test[0].bstrVal);
    

    Da kommt aber nur Käse raus. Hab schon einiges Probiert, aber nie kommt eine Sinnvolle zahl raus. Alle Anderen funktionen die kein VARIANT benutzen funktionieren Problemlos. Aber Leider sind gerade die, die es Benutzen recht wichtig.

    Danke schonmal



  • Hat keiner eine Idee 😞

    Bin echt ratlos



  • Ist denn bei der Doku gar kein Beispielcode dabei?



  • Hallo JBOpael,

    laut

    VARIANT containing an array of BSTR.

    handelt es sich ja um ein Array, also mußt du mittels der Array-Funktionen auf den VARIANT zugreifen (ich weiß jedoch nicht inwieweit das vom C++ Builder unterstützt wird): http://msdn.microsoft.com/en-us/library/ms221145.aspx



  • handelt es sich ja um ein Array, also mußt du mittels der Array-Funktionen auf den VARIANT zugreifen

    und wie mach ich das? Bin da echt ratlos.

    Ich hab mit dem Hersteller Kontakt aufgenommen, der hat mir eben geantwortet und kam auch mit einem ähnlichen Link http://edn.embarcadero.com/article/22016

    ScanUSB function contains a SafeArray of strings so you need to extract the first string value (first device found) from the SafeArray

    So der Hersteller. Weitere Aussage war das es mit dem CBuilder nicht getestet wurde.

    Ich hab aber echt keine Ahnung wie ich das anstellen soll, oder was das im Detail heißt?? 😕 😞

    Ich weiß hier werden ungern fertige Lösungen präsentiert, aber vielleicht kann mir jemand einen Schubs geben wie das am umsetzten kann/muss/sollte...


Log in to reply