Edit1->Text nicht direkt ändernbar bei Addressübergabe?



  • Hallo Community,

    Ich hab ne Frage dich mich interessiert.
    Und zwar hab ich eine Funktion, der ich die Adresse eines UnicodeStrings übergebe und somit den orginal UnicodeString direkt in der Funktion verändere.
    Sagen wir die Funktion ändert den String auf "Tschüss"

    UnicodeString str = "Hallo";
    MeinFunktion(&str);
    ShowMessage(str);  //Ausgabe = Tschüss
    

    Soweit so gut.
    Nun meine Frage, wieso funktioniert das nicht wenn ich statt der Variable str (UnicodeString) z.B. Edit1->Text (UnicodeString) mit übergebe?!

    Edit1->Text = "Hallo";
    MeineFunktion(&(Edit1->Text));
    ShowMessage(Edit1->Text);  // Ausgabe = Hallo
    

    Ich steh glaub ich am Schlauch



  • Hallo

    Die Property Text gibt nur eine temporäre UnicodeString-Instanz zurück. Änderungen auf diese Instanz haben keinen Bestand, und werden nicht zurück auf die Property übertragen. Das betrifft alle VCL-Properties mit allen Datentypen.
    Dir bleibt bei diesem Konzept nur die Verwendung einer Variable als Zwischenspeicher.

    bis bald
    akari



  • Oder deine Funktion ändert direkt den Text des Eingabefeldes ala

    MeineFunktion(TEdit *edt) {
      edt->Text = "Tschüss";
    }
    

Anmelden zum Antworten