Wie muss ein Array definiert werden für eine ActiveX DLL



  • Hallo,

    ich verwende eine ActiveX DLL um auf eine Messbrücke zuzugreifen.

    Die Messbrücke ansprechen, parametrieren und auch eine Messung starten funktioniert. Nur beim Abholen der Werte stosse ich auf ein Problem mit der Übergabe der Werte in ein Array.

    Die Funktion ist laut Beschreibung so definiert:

    *MeasureSingleChannel(ByVal NumberOfSamples As Long, ByRef Result As Single, ByRef Results() As Single) As Boolean

    performs a complete single channel measurement always at channel A
    returns both mean value and array of single measurement values
    returns true if successful
    Premises:
    Result = double variable where the mean value of the measurement is stored
    Results() = array of double dimensioned from 0 to NumberOfSamples-1
    where all single measurement values are stored*

    Eine Array Definition der Form:

    static array<float>^ Werte = gcnew array<float>(999);
    

    führt zu einer Fehlermeldung:
    *
    SafeArray kann nicht zu diesem Arraytyp gemarshallt werden, da es eine untere Begrenzungsanzahl hat, die ungleich 0 (null) ist, oder mehrere Dimensionen hat*.

    Laut Hersteller wird nur eine Dimension erwartet.

    Danke für Eure Hilfe im Voraus.

    Gruß



  • Zeige auch noch wie Du die Funktion aufrufst...



  • Dann liegt mein Fehler im Aufruf und nicht in der Definition?

    myIURClass->MeasureSingleChannel(Samples,Ergebnis,Werte);
    

    Danke und Gruß



  • Ev ist es einfach via native C++ den Aufruf zu tätigen.
    Probier doch mal einen float* auf einen genügend grosses float Array zu übergeben.

    Simon



  • float *Werte2 = new float[999];
    myIURClass->MeasureSingleChannel(Samples,Ergebnis,Werte2);
    

    Führte zu folgendem Fehler beim compilieren:

    *error C2664: 'prjIURDLL::ihIURClass::MeasureSingleChannel': Konvertierung des Parameters 3 von 'float ' in 'cli::array<Type> ^%' nicht möglich


Anmelden zum Antworten