unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, atstringproc_textbuffer, Types; type { TForm1 } TForm1 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); var buf: TATStringBuffer; s: tstringlist; list: tlist; i: integer; pos: integer; pnt0, pnt: tpoint; begin s:= tstringlist.create; for i:= 0 to 20 do s.add(stringofchar('t', random(40))); list:= tlist.create; for i:= 0 to s.count-1 do list.add(pointer(length(s[i]))); buf:= TATStringBuffer.create; buf.Setup(s.text, list, 1); for i:= 0 to 1000 do begin pnt0.y:= random(s.count); pnt0.x:= random(length(s[pnt0.y])); pos:= buf.CaretToStr(pnt0); pnt:= buf.StrToCaret(pos); if not PointsEqual(pnt, pnt0) then begin memo1.lines.add('bad test: line:col '+inttostr(pnt0.y)+':'+inttostr(pnt0.x)); exit; end; end; memo1.lines.add('ok test'); end; end.