RichEdit: Wenn vorheriges Zeichen Tab, dann diesen löschen.



  • Ich möchte, sofern das Zeichen direkt links neben meinem Cursor im RichEdit ein Tabulator ist ("\"), dieses löschen. In der ersten Zeile der folgenden beiden Zeilen kommt aber die Zugriffsverletzung:

    if( RichEdit1->Lines->Strings[ RichEdit1->CaretY ].SubString( RichEdit1->CaretX - 1, 1 ) == "\t" )
    {
    RichEdit1->Lines->Strings[ RichEdit1->CaretY ].Delete( RichEdit1->CaretX - 1, 1 );
    }

    Achja, CaretX und CaretY braucht euch nicht wundern, das gibt die Cursorposition an (interne Sachen, nicht VCL). Keine Angst, daran liegt der Fehler nicht, weil das einfach mal bei allen anderen Sachen problemlos funktioniert.



  • RichEdit1->Lines->Strings[ RichEdit1->CaretY ].SubString( RichEdit1->CaretX - 1, 1 )

    Was liefert dir dieser Term zurück wenn du glaubst, dass es "\t" zurückliefern müsste? An welcher Stelle führst du diesen Code aus? (OnKeyPress/Down/Up?)

    -junix



  • (diesen code führe ich in einem ganz normalen buttonevent aus.)

    Diese erste Codezeile ist doch eigentlich logisch, was die machen soll. Und zwar aus der aktuelle Zeile (wo sich der Cursor befindet) Einen Teilstring herauszufiltern, der genau ein Zeichen lang ist und sich vor dem Mauscursor befindet!? Was mach ich falsch!?



  • ?



  • Meine erste Frage hast du aber noch nicht beantwortet... Bemüh doch mal den Debugger

    -junix


Anmelden zum Antworten