TEdit übernimmt nicht vollständigen Eintrag
-
Hallo zusammen!
Möchte einen Array von char an ein TEdit übergeben.
Das Wort hat eine Länge von 9 Zeichen.
Leider wird jedesmal der letzte Wert (Buchstabe) abgeschnitten!Kann mir evtl. jemand weiterhelfen?
Folgender Code wurde verwendet:
char *wort = new char[9]; wort = Edit1->Text.c_str(); Edit2->Text = wort;Vielen Dank schon mal!
-
es müssen 10 zeichen sein , damit das \0 noch mit geschrieben werden kann ;
char *wort = new char[10];
wort = Edit1->Text.c_str();
Edit2->Text = wort;
-
Habe ich auch schon ausprobiert.
Funktioniert leider auch nicht!Aber trotzdem danke!
-
Komisch bei mir geht es ;-).
möchtest Du unbedingt mit *CHAR arbeiten ?
sonst nimm doch AnsiString.
AnsiString wort;
wort = Edit1->Text;
Edit2->Text = wort;
-
Muss mit *char arbeiten, da ich jeden einzelnen Wert vergleiche und gegebenenfalls ersetze (Hab das nur im angegebenen Code weggelassen)
-
Hi,
was ja auch super ist, das funktioniert nur bei ungeraden nicht (also: Edi, Edit1, Edit111...) bei geraden (Edit, Edit11...) funktioniert das ganze

... BCB 6 Enterprise ...
mfg, Micha
-
Seit wann kann Arrays direkt zuweisen? Damit erzeugst Du ein Memory-Leak und das Verhalten der Anwendung ist nicht mehr vorhersagbar, da c_str() nur einen temporär gültigen Zeiger übergibt.
Und natürlich muß das Char-Array eine Größe von 10 haben, damit 9 Zeichen rein passen.
-
bpfitzner schrieb:
Muss mit *char arbeiten, da ich jeden einzelnen Wert vergleiche und gegebenenfalls ersetze (Hab das nur im angegebenen Code weggelassen)
Das Argument versteh ich nicht

AnsiString test = "Hallo"; ShowMessage(test[1]+test[2]/* ... */);
-
Die Argumente meiner beiden Vorposter sind schon richtig. Hier nur mal ein Beispielcode, wie das mit einem char-Array richtig wäre.
const int len(9); char *wort = new char[len+1]; strncpy(wort, Edit1->Text.c_str(), len); wort[len] = '\0'; //Nur zur Sicherheit Edit2->Text = wort; delete[] wort;
-
Vielen Dank für die Hinweise! Jetzt funktioniert alles bestens!