Danke für die Mühe, Peter.
Wie Du schon sagtest, viel besser ist Deine Variante nicht. Immerhin zählt sie aber bereits die Zeilen, und vergleicht nicht Zeichen für Zeichen!
Daß Du den Text bis zur Selektion kopiert hast brachte ich aber auf folgende Idee:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function TForm2.LineNr(Start: Integer): String; begin RichEdit2.Text := Copy(RichEdit1.Text,0,Start); Result := 'L' +IntToStr(RichEdit2.Lines.Count-1) +'Z' +IntToStr(Length(RichEdit2.Lines[RichEdit2.Lines.Count-1])+1); end; |
Denn nachdem ich alles bis zur Selection in ein neues Richedit kopiert habe bekomme ich ja mit Lines.Count-1 die Nummer der letzten Zeile, und mit der Länge der letzten Zeile auch die Position des Zeichens raus
Ob ich mit dem zweiten Richedit nun mit Kanonen auf Spatzen schieße kann natürlich sein....
Aber wenn ich den Text des sichtbaren RichEdit komplett neu setze verliere ich die Cursorposition, bzw die Selektion.
Der User müsste also immerwieder von oben anfangen zu scrollen usw.
Da ich hier im Moment #13 suche kann ich auch die Lines.Count verwenden. Gut soweit. Was aber wenn ich was anderes suchen müsste?
Gibt es wirklich nichts anderes als Char für Char zu vergleichen?
Mein Problem ist zwar gelöst, aber die Frage ob es für das Zählen etwas anderes gibt eigentlich noch nicht!