AnsiString nach char



  • Hi zusammen,

    möchte einen AnsiString nach char konvertieren, da ich eine externe DLL aufrufe, welche ein char braucht.

    Habe es schon so probiert:

    //1.Versuch
    char wert = schreibewert.c_str();
    //Fehler: Kovertierung von "char*" nach "char" nicht möglich
    
    //2.Versuch
    char wert = (char)schreibewert.c_str();
    //Kommt totaler Müll raus!
    
    //3.Versuch
    char *wert = new char[schreibewert.Length()+1];
    strcpy(wert, schreibewert.c_str());
    //Fehler: Kovertierung von "char*" nach "char" nicht möglich
    

    Wie mach ich das?

    Danke und Grüße



  • char test[schreibewert.lenght];
    for(int i=0;i<schreibewert.lenght+2;i++)
    {
    test[i]=schreibewert[i+1];
    }



  • char *wert = new char[schreibewert.Length()+1];
    strcpy(wert, schreibewert.c_str());
    //Fehler: Kovertierung von "char*" nach "char" nicht möglich
    

    Das ist eigentlich der richtige Weg. Ich sehe auch keinen Grund für die Fehlermeldung.



  • Hallo

    //1.Versuch
    char wert = schreibewert.c_str();
    //Fehler: Kovertierung von "char*" nach "char" nicht möglich
    

    Wenn du dir die Fehlermeldung mal durchliest, solltest du merken was daran nicht stimmt.
    Denn du willst ja einen C-String haben, nicht einen C-Char. Für den reinen Lesezugriff ist das folgende vollkommen ausreichend :

    char* wert = schreibewert.c_str();
    

    Nur wenn die DLL-Funktion auch schreibend auf den C-String zugreifen soll, dann muß strncpy ran :

    char *wert = new char[schreibewert.Length()+1];
    strncpy(wert, schreibewert.c_str(), schreibewert.Length()); // strncpy benutzen!
    // wert benutzen
    delete[] wert;
    

    bis bald
    akari



  • Besser wäre meiner Meinung nach

    const char* wert = schreibewert.c_str();
    

Anmelden zum Antworten