tagVariant



  • Hallo Profis,

    wie bekomme ich einen ANSI String in tagVariant

    SMSSend1->set_sUsername(user); set_sUsername(tagVARIANT *)
    SMSSend1->set_sPassword(pass);
    

    user und pass möchte ich aus einer ini-datei auslesen, bei allen Versuchen bekomme ich aber Fehlermeldungen z.B char* nach char nicht möglich usw.
    jedenfalls bekomme ich die Konvertierung nicht hin.

    Danke myerscola



  • Ich denke, es funktioniert wohl mit einem einfachen C-String, also

    SMSSend1->set_sUsername(user.c_str());
    


  • Danke erst mal, aber leider geht das auch nicht:
    [C++ Fehler] Unit1.cpp(31): E2034 Konvertierung von 'char *' nach 'tagVARIANT *' nicht möglich
    [C++ Fehler] Unit1.cpp(31): E2342 Keine Übereinstimmung des Typs beim Parameter 'Param1' ('tagVARIANT *' erwartet, 'char *' erhalten)

    Die Meldungen spuckt der CBuilder jetzt aus



  • Ah, ich sehe die Funktion erwartet einen Zeiger auf einen Variant, also

    tagVariant varUser = user; // bzw. user.c_str()
    SMSSend1->set_sUsername(&varUser);
    


  • Ich habe es jetzt so:

    AnsiString user="myname";
    tagVARIANT varUser=user.c_str();
    SMSSend1->set_sUsername(&varUser);
    SMSSend1->Connect();
    

    das bringt:
    [C++ Fehler] Unit1.cpp(32): E2034 Konvertierung von 'char *' nach 'tagVARIANT' nicht möglich

    Also nach wie vor bekomme ich den Datentyp tagVARIANT nicht in den Griff.



  • Ich hoffe, wir meinen dieselbe Struktur, dann kannst du folgendes schreiben:

    tagVariant varUser;
    varUser.pcVal = user.c_str(); // schau dir mal die ganzen Felder an (go to definition), falls pcVal nicht stimmt...
    SMSSend1->set_sUsername(&varUser);
    

    Der oben gepostete SourceCode funktioniert nicht, da tagVariant keinen (überladenenen) Konstruktor besitzt, sondern eine (dämliche -) C-Struktur ist.



  • Das war die Lösung 🙂 , vielen Dank für die Mühe.

    Gruß myerscola


Anmelden zum Antworten