![]() |
Problem mit SelStart
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich stelle fest dass sich SelStart in einem TRichedit in Delphi7 und Delphi2010 unterschiedlich verhält. Folgender Code liefert in Delphi 2010 nicht das gewünschte Ergebis.
Delphi-Quellcode:
In 2010 wird der selektierte Text zwei Zeichen zu weit hinten markiert.
Memo.SetFocus;
Memo.SelStart:=50; Memo.SelLength:=Length(SearchString); // Search String ist "di" Ich habe zwei Screenshots angehängt. Hat sich da was geändert? |
Re: Problem mit SelStart
Welchen Typ hat SearchString?
|
Re: Problem mit SelStart
Das Length scheint ja zu stimmen (oder hast du auch schonmal versucht es über einen Zeilenumbruch hinweg zu markieren? )
nur der Anfang (SelStart( stimmt eben nicht. |
Re: Problem mit SelStart
Schon mal den Text analysiert, der im RichEdit steht? Hast du vielleicht irgendwo zwei Leerzeichen zu viel oder zu wenig? Wie sieht das Ergebnis denn aus, wenn du die Zeilenumbrüche mal entfernst?
Edit: ich hasse dich, du roter Kasten... |
Re: Problem mit SelStart
SearchString ist ein Unicode und wird direkt im TFinddialog eingegeben.
Leerzeichen sind keine drin - es ist 100% derselbe Text im Richedit drin, auch im Buffer sieht's identisch aus, also Zeilenumbrüche usw. Wenn ich die Zeilenumbrüche rausmache kommt das gleiche Ergebnis raus, damit könnte es was zu tun haben Der Wert für SelStart kommt übrigens im "Echtbetrieb" aus einer Suchroutine und ist in den unterschiedlichen Delphi Versionen identisch. Lediglich die Markierung wird in D2010 falsch gesetzt. Es sieht fast so aus als würden die Zeilenumbrüche #13 #10 von SelStart in D2010 anders (falsch?) gezählt. Ich such schon den ganzen Tag...... :wall: Wie verhält sich das denn bei Euch (unverschämte Frage)? |
Re: Problem mit SelStart
Hm... Ich denke eher dass es an Unicode liegt. War mein erster Gedanke, aber ich vermute das halt nur :oops: Ich wüsste nicht, woran ich das nun festmachen könnte...
Zitat:
|
Re: Problem mit SelStart
Ja, dass es an den Zeilenumbrüchen liegt, hatte ich auch schon vermutet, als ich vor zwei Tagen diese (ähnliche) Frage gelesen habe:
![]() (Leider kann ich es im Moment nicht testen.) |
Re: Problem mit SelStart
An Unicode habe ich auch gedacht, aber auch ich finde da absolut keinen Ansatz.
Wenn's ein Unicode Problem wäre dann wäre SelStart aus meiner Suchroutine falsch - ist aber identisch. Die Zeichen habe ich eins zu eins verglichen - identisch. Auch mal in ein leeres Memofeld manuell die selben Zeichen reingetippt - auch keine Änderung. Sobald Umbrüche drin sind verschiebt sich der markierte Text immer mehr nach hinten, je mehr Umbrüche desto größer der Versatz. Da mangelts wirklich an Ideen...... :shock: |
Re: Problem mit SelStart
Nutzt du dir Methode zur Positionsbestimmung, oder? Und da kommen die gleichen Wert raus? :gruebel: wenn das wirklich so ist, dann würde ich wahrlich an der TRichEdit zweifeln. Entweder, dass da ein Problem mit Unicode vorliegt, oder dass sich dadurch vielleicht intern etwas geändert hat. Total strange...
|
Re: Problem mit SelStart
Delphi-Quellcode:
Dieser Code selektiert in D4, D7 und D2006 "cde"
RichEdit1.Text := '12345'#13#10'abcdefgh';
RichEdit1.SelStart := 9; RichEdit1.SelLength := 3; und in D2009, sowie D2010 ist es "def". [add] Die Zeilenumbrüche scheinen OK:gruebel: Hab sie grad mal via SendMessage direkt ausgelesen. [edit] SelStart und SelLengt arbeiten wirklich nur mit einem Byte als Zeilenumbruch :wall: Das Memo arbeitet aber noch richtig |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 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