richmemo, seltext, Bug ? (und Lösung)

Rund um die LCL und andere Komponenten
Antworten
arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

richmemo, seltext, Bug ? (und Lösung)

Beitrag von arturx »

richmemo.getseltext gibt m.E. falsche Ergebnisse:
Als ich in dem richmemo Beispiel das nextSylerange-event ergänzte durch

Code: Alles auswählen

procedure Tforichmemotest.btnextstylerangeClick(Sender: TObject);
      begin RichMemo.GetStyleRange(RichMemo.SelStart, ofs, len );
               ..... etc...
              Caption := richmemo1.seltext; // <--- neue Zeile im Beispiel Projekt !!!
       end;
passte das form-caption überhaupt nicht zu den selektierten Abschnitten (highlighted in richmemo)
Nach einiger Zeit kam ich darauf, dass getseltext sich wohl an den #13#10 des Textes verschluckt !
Ich denke, dass das ein Bug ist.

Mit dem folgenden workaround geht es :

Code: Alles auswählen

function seltext_new(rimem : trichmemo) : string;
      var i,len,
          start    : integer;
          tx,
          nthchar  : string;
    begin
          tx    := rimem.Text;
          start := rimem.SelStart;
          len   := rimem.SelLength;
          i      := 0;
          While i < start do
             begin inc(i);
                   NthChar := UTF8Copy(tx,i, 1);
                   If (nthchar = #10)
                      then inc(start);
             end;
           While i < (start+len) do
              begin inc(i);
                    NthChar := UTF8Copy(tx,i, 1);
                    If (nthchar = #10)
                        then inc(len);
               end;
        // ............................................
         result := UTF8Copy(tx,start+1,len);
  end;
1.Bestimmt hat noch jemand eine elegantere Lösung (ich meine jetzt den Algorithmus und nicht das Überschreiben von getseltext)
2.Seht Ihr das auch als Bug an ?

Antworten