Talk:SynEdit
From Free Pascal wiki
Jump to navigationJump to searchRepl
var p1,p2: TPoint; begin p1 := SynEdit.LogicalCaretXY; p2 := SynEdit.LogicalCaretXY; p2.x := p2.x + UTF8CharacterLength(@SynEdit.LineText[p2.x]); // byte len of char AFTER current caret SynEdit.TextBetweenPoints[p1,p2] := ;
Bad example. What it must do? replace One char with empty string? Show example how to replace 4 chars with S string. Alex22 03:55, 12 June 2014 (CEST)
- Improved example. How to calculate bytepos of a utf8 char is not a SynEdit topic. This should be covered on its owe wiki page / or on a page related to utf8. If exists it can be linked. - Martin
- How to write examp, which replaces string from (x=2,y=10) to (x=4,y=20) with string S ?
- b) better remove @SynEdit.LineText[p2.x] , it's not good for exm. Alex22
- if x=2/y=10 are correct logical positions (1-based first byte pos of a char)
- (there is a unit that defines the function point / use codetools to find, it, or assign by hand to p.x/p.y of point)
- Last byte replaced is at x=3 y=20
- SynEdit.TextBetweenPoints[point(2,10),point(4,20)] := s;
- This is identical to setting the text selection, and replacing it. Except, this can keep the current selection. -- Martin