einfaches Beispiel:
Delphi-Quellcode:
RichEdit1.Lines.Clear;
RichEdit1.Lines.Add('fdfdfd');
RichEdit1.Lines.Add('fdfdfd');
RichEdit1.Lines.Add('xx1234567890xx');
//RichEdit1.SelStart := Pos('4567', RichEdit1.Lines.Text) - 1; // *1
RichEdit1.SelStart := Pos('4567', RichEdit1.Text) - 1; // *2
RichEdit1.SelLength := Length('4567');
1) hier ist klar, daß leider #13#10 (sLinebreak) rauskommt, obwohl man das leicht ändern könnte.
2) den Schrott hier hat Emba aber absichtlich verbaut und dabei vergessen auch SelStart/SelLength mit umzurechnen
Emba hatte mit der Umstellung auf
Unicode auch endlich mal das Richedit-Control upgegradet und nutzt nun nicht mehr die überaltete Version. (von
RICHEDIT v2 auf v3 oder war's von 3 auf 4
)
Wie dem auch sei, komischer Weise nutzt diese Komponente intern als Zeilenumbruch die #13 (Mac
), also dachte Emba sich, es ist mal "schlau" und ersetzt "einfach" die #13 mit sLineBreak, beim Auslesen.
Tja, und nun haben wir den Salat ... pro Zeile verschiebt sich der Index.
Ja, es sind irgendwo mehrere
QC-Einträge und auch mehrere
DP-Beiträge dazu vorhanden, aber seitens Emba keine wirkliche Reaktion.
Es gibt auch 2-3 "einfache" Lösungen. (die StringList anpassen, aber leider ist der Zugriff darüber langsam und direkt über die
WinAPI oder die Indize von SelStart/SelLength umrechnen)
Dis ist mal ein wirklicher Wunschtraum ... daß alle
QC-Einträge beantwortet und die Probleme behoben sind.