Datenübergabe an AktiveX-Control



  • Hallo,

    ich muß im Rahmen meiner Diplomarbeit ein Programm zur Steuerung eines Lock-In Verstärkers schreiben. Vom Hersteller hab ich ein AktiveX Control bekommen. Dieses habe ich schon in den Borland Builder 6 eingebunden. Da ich Neuling in der Programmierung bin, weis ich aber nicht, wie ich die Mitgelieferten Funktionen/Methoden des AktiveX-Controls bedienen muß.

    hier mal ein Beispiel einer Funktion:

    short WriteReadSRInstrument (short nInstrumentNumber, BSTR sCommand, VARIANT* sResponse, VARIANT* VREsponseArray, VARIANT* nStatusByte)
    

    InstrumentNumber ist einfach ein Integer, das ist kein Problem; als sCommand will das Gerät einen String wie z.B. "ID", hier fangen schon die Probleme an.. es will wchar_t , wenn ich dann eine Variable so definiere kommt eine Fehlermeldung wie "can't convert wchar_t into wchar_t*" .. ???? was will mir der Builder da sagen? kenn mich mit Zeigern nicht aus, warum schluckt das Teil nicht auch "normale" Variablen?

    was VARIANT* soll hab ich nicht verstanden, da war die Hilfefunktion nicht sehr hilfreich..

    hier mal mein Quellcode:

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "ULockIn1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma link "SRINSTCOMMSLib_OCX"
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
            if(!SRInstComms1->VerifyConnections()) Memo1->Lines->Add("es funktioniert"); //Test ob Gerät funktioniert
            SRInstComms1->OpenSRComms(0);    //Instrument 0 öffnen
            SRInstComms1->WriteReadSRInstrument();   //lesen bzw. schreiben auf Gerät
            SRInstComms1->CloseSRComms(0);  //Instrument 0 schließen
    }
    //---------------------------------------------------------------------------
    

    es funktioniert alles, nur mit "WriteReadSRInstrument( ) kann ich nicht umgehen..

    Vielleicht kann ja jemand von Euch was mit der obigen Funktionsbeschreibung anfangen..

    Vielen Dank!


  • Mod

    Hallo

    vermutlich heisst die Fehlermeldung nicht

    can't convert wchar_t into wchar_t"..

    sondern

    can't convert wchar_t into wchar_t*
    oder
    can't convert wchar_t* into wchar_t

    und dann solltest du schon draufkommen was da gemeint ist

    MfG
    Klaus



  • war ein Schreibfehler meinerseits..

    was ist denn der Unterschied zwischen "tagVariant*" und "Variant*" ? Variant* kennt mein Builder ja noch, das komische Gerät will allerdings tagVariant* ..



  • Hi,

    schau mal in der msdn nach, glaub da hab ich schon mal was drüber gesehen!

    Gruß


Anmelden zum Antworten