AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Problem mit SelStart

Offene Frage von "himitsu"
Ein Thema von Hazebukelar · begonnen am 28. Jan 2010 · letzter Beitrag vom 31. Mär 2020
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.540 Beiträge
 
Delphi 12 Athens
 
#1

Re: Problem mit SelStart

  Alt 28. Jan 2010, 17:10
Delphi-Quellcode:
RichEdit1.Text := '12345'#13#10'abcdefgh';
RichEdit1.SelStart := 9;
RichEdit1.SelLength := 3;
Dieser Code selektiert in D4, D7 und D2006 "cde"
und in D2009, sowie D2010 ist es "def".

[add]
Die Zeilenumbrüche scheinen OK
Hab sie grad mal via SendMessage direkt ausgelesen.


[edit]
SelStart und SelLengt arbeiten wirklich nur mit einem Byte als Zeilenumbruch
Das Memo arbeitet aber noch richtig
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.540 Beiträge
 
Delphi 12 Athens
 
#2

AW: Problem mit SelStart

  Alt 10. Nov 2010, 16:06
Kann mal bitte wer prürfen, ob dieses Problem(chen) in Delphi XE immernoch besteht?

> 'nen TRichEdit auf eine Form pappen
> und dann Folgendes ins OnCreate rein
Delphi-Quellcode:
RichEdit1.Text := '123'#10'456'#10'789'#10'abc';
RichEdit1.SelStart := 6;
RichEdit1.SelLength := 4;
ShowMessage(Format('%d %d', [Length(Trim(RichEdit1.Text)),
  Length(Trim(RichEdit1.Lines.Text))]));
Ist dort die "6" bis "8" markiert und die Message zeigt "18 18" an, dann wurde es wohl nicht behoben.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Hogla

Registriert seit: 15. Jun 2019
1 Beiträge
 
#3

AW: Problem mit SelStart

  Alt 22. Jan 2020, 08:42
Hallo,
habe eben dein Beitrag entdeckt.
Habe gerade das selbe Problem.
Hast du damals raus gefunden woran das liegt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.540 Beiträge
 
Delphi 12 Athens
 
#4

AW: Problem mit SelStart

  Alt 31. Mär 2020, 12:47
Erstmal nutzt das RichEdit im Windows (nicht die alte/erste Version/API) ein #13 als Zeilenumbruch.

Jemandem von den Delphi-Entwicklern gefiel das nicht und daher wird beim Zugriff auf .Text und .Lines der Zeilenumbruch auf sLineBreak (#13#10) geändert. (was per se eine eigentlich gute Idee "wäre")
Allerdings wird hier SelText und auch SelStart+SelLength nicht ebenfalls entsprechend umgerechnet, womit diese noch auf den Indize mit #13 bassieren und es somit mit jeder Zeile um jeweils ein weiteres Zeichen verrutscht.


Ich hatte mal mühevoll versucht auch diese Indize umzurechnen und einen Bugfix für die Komponente an Embarcadero übergeben, aber na ja .... nach all den Jahren des Ignorierens wird das wohl nix mehr.

Du kannst aber ReplaceStr(RichEdit.Text, sLineBreak, #10) und ReplaceStr(RichEdit.SelText, #13, #10) nutzen (da sich das kranke Verhalten nicht abschalten lässt),
um die Texte wieder auf #13, ähhh besser #10 zurückzuändern, was dann mit den Indize von SelStart, SelText, FindText usw. übereinstimmt.


Wobei, wenn ich jetzt nochmal drüber nachdenk, dann wäre die einfachste Lösung, wenn emba das Ersetzen von #13 nach #13#10 zu #10 abändert. (auch ein richtiger Zeilenumbruch, aber genauso lang)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (31. Mär 2020 um 12:55 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz