70 lines
1.2 KiB
ObjectPascal
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.
|
|
|