RichEdit1->Lines->Strings[x] das erste zeichen ermitteln



  • Wie kann ich aus einer bestimmten Zeile (RichEdit1->Lines->Strings[x]) ermitteln welches zeichen dort steht.

    Es soll für ein Synta Highlighting sein. Wenn ich in der Zeile ein Wort finde möchte ich die ganze Zeile einfärben. Leider ist das Problem wenn das Wort nicht am anfang sondern in der Zeile steht Markiert er den Bereich vorher mit. Deshalb muss ich den Wert vom anfang der Zeile bis zum Start des Wortes abziehen. Weiss jetzt aber nicht wie ich rausbekomme das wievielte zeichen das erste aus der zeile ist. Hoffe jemand versteht wie ich das geschrieben habe. 😉



  • Guck dir mal die Anstring Methoden an... Da wirst du fündig 🙂

    Obs mit RichEdit geht weis sich nicht, zumindest wäre es eine Lösungsmöglichkeit über einen kleinen Umweg, eben über paar Funktionen von AnsiString 🙂




  • Hab grade keinen Builder parat, aber ich meine, dass es so ähnlich ging...

    J0



  • .J0 schrieb:


    Hab grade keinen Builder parat, aber ich meine, dass es so ähnlich ging...

    J0

    Ja, so bekomme ich raus welcher Buchstabe dort steht. Kann ich auch noch ermitteln das wievielte zeichen er im Text ist??? Also einen int Wert?



  • Hi,

    gib mal RichEdit1->Lines->
    und das Englishe Wort für Anzahl ein. Eine Vorgehensweise, die sich immer bewährt. Ansosnten setzt den Cursor auf Lines und drücke F1.



  • Bin jetzt falsch oder was?
    Damit bekomme ich doch raus wieviele Zeilen in meinem RichEdit sind. Aber nicht aus einer bestimmten Zeile das wievielte Wort das erste im gesammten Text ist.

    Ein bespiel wie ich das gerne hätte mit diesem 3 Zeilen Text:

    sdhs hsfks hfsjk f
    sjf sh fs fhsl fs
    skf sh flshj fls f

    Aus der zweiten Zeile möchte ich jetzt wissen das wievielte Zeichen der erste Buchstabe ist. Hier wären es jetzt 20.



  • entweder

    int Pos=RichEdit1->Lines->Text.Pos("DasWort"); /7 suche im ganzen Text

    oder
    int Pos=RichEdit1->Lines->Strings[1].Pos("DasWort"); // suche im zweiten String



  • iconnoci schrieb:

    Aus der zweiten Zeile möchte ich jetzt wissen das wievielte Zeichen der erste Buchstabe ist.

    Ungetestet:

    RichEdit->SelStart = RichEdit->Lines->Text.Pos(RichEdit->Lines->Strings[i]);
    RichEdit->SelLength = RichEdit->Lines->Strings[i].Length();
    RichEdit->SelAttributes->...
    

    Wie schon gesagt, siehe die AnsiString-Methoden.


Anmelden zum Antworten