TEdit->Text Problem
-
Hallo,
ich hätte da mal eine Frage:Warum funktioniert diese Abfrage nicht
char ErstesZeichen = Edit1->Text[1]; if(ErstesZeichen == '0') Edit1->Text[1] = '1';
und diese funktioniert ????
AnsiString Text = Edit1->Text; char ErstesZeichen = Text[1]; if(ErstesZeichen == '0') { Text[1] = '1'; Edit1->Text = Text; }
Beides sind doch AnsiString- Typen, oder irre ich mich da ?
Für eure Infos bin ich dankbarGruß
-
Hallo,
Bei Schreibvorgängen auf die property Text von TEdit wird intern die Funktion SetText aufgerufen.
void __fastcall SetText(const AnsiString Value);
Obige Zeile ist die Deklaration von SetText in der Klasse TControl (TEdit erbt über einige Zwischenstufen davon).
Text selber ist so deklariert__property AnsiString Text = {read=GetText, write=SetText};
Ciao
-
Und wieso klappt dann bei ihm das 2. nicht?
-
Wer sagt denn, dass die zweite Variante nicht funktioniert?
-
Danke dir,
wenn ich dich also richtig verstehen, kann man nicht direkt auf die einzelnen Zeichen eines Edit1->Text zugreifen. Oder ?
-
Du musst den Text halt auf eine temporäre Variable zwischenspeichern und dann zurückschreiben. Das mit den Zugriffsfunktionen trifft übrigens noch auf die meisten anderen properties zu.