70 lines
1.2 KiB
ObjectPascal

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.