zeiger auf Edit
-
hi leute
frage: warum funktioniert folgender code nicht ?
void __fastcall TForm1::Button2Click(TObject *Sender) { char *x; x=Edit1->Text.c_str(); Edit2->Text.sprintf("%s",x); }
ich steh heute nur noch voll daneben
Deadman
-
Edit2->Text = Edit1->Text;
[ Dieser Beitrag wurde am 13.03.2003 um 00:08 Uhr von WebFritzi editiert. ]
-
hoi WebFritzi ..
es geht nich darum einem den Wert von einem Edit einem anderen zuzuweisen.
ich brauch nen pointer auf den inhalt eines Edit´s.wie in dem kurzen beispiel, was ich schon gepostet habe.
es geht darum, den inhalt des einen Edit´s zu aendern. dafuer brauch ich aber einen pointer auf den inhalt des Edit´sDeadman
-
Hat AnsiString bei dir wirklich die Methode sprintf() ?
-
jo hat
Deadman
-
Achso, bei mir noch nicht (BCB3).
char* x = new char[Edit1->Text.Length() + 1]; strcpy(x, Edit1->Text.c_str()); Edit2->Text.sprintf("%s", x); delete x;
-
ahoi WebFritzi
deine variante wußte ich auch. mir ging es darum, ob ich nen char-pointer direkt auf den char-string eines Edit´s setzen kann. also direkt manipulieren.
ich brauch das naemlich fuer einen parser, und wenn ich zuerst alles umkopieren muß, dann wird das ziemlich zeitaufwendig und umstaendlich.
ich brauch das nicht nur fuer ein Edit.Deadman
-
Original erstellt von Deadman:
[...]und wenn ich zuerst alles umkopieren muß, dann wird das ziemlich zeitaufwendig und umstaendlich.[...]Die aufwendigsten Zeilen in Fritzis Varianten sind die Zeile mit new bzw. delete. Die anderen Zeilen gehen ratz fatz.
Du kannst keinen Zeiger auf das Innere des Edit-Feld-Textes sprich des AnsiStrings bekommen, da sich dieser jederzeit ändern könnte. (und diene Kopie des Zeigers daher automatisch ungültig wird. - Siehe auch Hinweis zu c_str() in der BCB-Hilfe).
Der einzige richtige Weg führt über eine Kopie des Strings oder operator [] (oder andere Zugriffsfunktionen) des AnsiStrings wobei letztere Variante eher langsamer ist.
-junix
-
Darf ich auch nochmal auf den entsprechenden FAQ-Beitrag verweisen (AnsiString nach char*)?
-
Hobbala (:
-
Hi Jansen..
es ging nicht darum wie ich einen AnsiString in ein char* bringe, sondern ob ich mittels eines pointers direkt auf den string zugreifen kann.
Deadman
-
Wobei auch das in dem entsprechenden FAQ Beitrag steht... ...wenn hald auch etwas knapper...
-junix