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();