AnsiString in char*
-
hey,
versuche ein AnsiString aus einem TEdit einzulesen und in ein char* zu speichern,
nur bekomme ich bei meiner methode immer eine Fehlermeldung.[char *wert;]
[strcpy(wert, TEdit->Text.c_str());]kann mir da jemand helfen?
danke
-
Hallo,
1. welche Fehlermeldung
2. Hast du für dein char* Speicher vereinbart ?
3. FAQ geschaut ?
-
c_str(); liefert dir nur in dem Moment, in dem du die Funktion aufrufst, einen Pointer auf den nullterminierten String zurück. Sekunden später kann der Wert schon ein ganz anderer sein!
Außerdem kannst du den Wert vom char* nur in eine Variable kopieren, nicht in den Rückgabewert einer Funktion!
-
@Reyx
Klar kann der Wert in Edit->Text geändert sein. Deswegen ist das char* nach dem strcpy trotzdem gültig.
Was soll das mit dem Rückgabewert?
Desweiteren sollte man aus Sicherheitsgründen statt strcpy lieber strncpy verwenden.
-
Willst du zum Beispiel den Namen aus einem Edit-Fenster einer Variable zuordnen, kannst du folgenden Befehl benutzen:
name=Edit1->Text;
wobei du die variable "name" vorher deklarieren musst.
Willst du zum beispiel eine zahl einer variable zuordnen, musst du erst den Datentyp ändern. Zum Beispiel so:
In Edit1 steht: 56int zahl;
zahl=StrToInt(Edit1->Text);
So weit dann mal...
-
Was sollte das jetzt?