Stack-Überlauf



  • hi, kann mir jemand bei meinem problem helfen?

    void __fastcall TForm1::Memo1Change(TObject *Sender)
    {
    try{
            AnsiString k = Memo1->Text;
    
            AnsiString j = k[1] ;
            j = j.UpperCase();
            k = RightStr(k, k.Length() - 1);
            k = k + j;
    
            Memo1->Text = k;
    }
    catch(...)
     {
     }
    }
    

    bei diesem quelltext hägt das programm sich auf. Die fehlermeldung lautet stack-überlauf!?!? woran leigt das ? 😕



  • Du änderst den Text, wodurch sich der Text ändert, wobei die Textänderung ausgelöst wird, die den Text ändert, wodurch die Textänderung ausgelöst wird, die den Text ändert.... soll ich weiter machen?



  • Aach so verstehe 🙄 und wie kann ich das beheben? ich will den text schon während des schreibens ändern. kann auch sein dass ich einfach ne möglischkeit übersehen hab aber kann mir trotzdem wer helfen?



  • Ein Flag setzen und auswerten, das dir anzeigt, ob die Änderung vom User verursacht wurde oder Resultat deiner Routine ist? Oder OnKey... verwenden statt OnChange?

    Was soll dein Code eigentlich bezwecken? Meintest du nicht eigentlich k = j + k;? Wenn ja, was was hältst du davon:

    AnsiString k = Memo1->Text;
    k[1] = UpperCase(k[1])[1];
    Memo1->Text = k;
    


  • cool danke


Anmelden zum Antworten