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 dankbar

    Gruß



  • 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.


Anmelden zum Antworten