lazarus/docs/xml/lcl/tarrayexample.pas
2006-03-15 20:55:53 +00:00

74 lines
1.8 KiB
ObjectPascal

program tarrayexample;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ add your units here },strings,DynamicArray;
type
Tarrayexampleclass=class
private
procedure doDestroyItem(Sender: Tobject; Col,Row: Integer;var Item: Pointer);
end;
procedure Tarrayexampleclass.doDestroyItem(Sender: Tobject; Col,Row: Integer;
var Item: Pointer);
begin
strdispose(Item);
end;
var FCols: Tarray;
var ex:Tarrayexampleclass;
begin
FCols:= TArray.Create;
ex:= Tarrayexampleclass.Create;
FCols.OnDestroyItem:=@ex.doDestroyItem;
FCols.SetLength(8,8);
//FCols.OnNewItem:=@doNewItem;
FCols.arr[0,0]:=StrNew('string1');
FCols.arr[4,7]:=StrNew('string2');
FCols.arr[4,3]:=StrNew('string3');
writeln('0,0:'+Pchar(FCols.arr[0,0]));
writeln('4,7:'+Pchar(FCols.arr[4,7]));
FCols.MoveColRow(true,4,5);
writeln('after moving column 4 to 5');
writeln('5,7:'+Pchar(FCols.arr[5,7]));
writeln('before exchanging row 7 and 3:');
writeln('5,3:'+Pchar(FCols.arr[5,3]));
writeln('5,7:'+Pchar(FCols.arr[5,7]));
FCols.ExchangeColRow(false,7,3);
writeln('after exchanging row 7 and 3:');
writeln('5,3:'+Pchar(FCols.arr[5,3]));
writeln('5,7:'+Pchar(FCols.arr[5,7]));
FCols.DeleteColRow(true,5);
writeln('after deleting column 5:');
try
writeln('5,3:'+Pchar(FCols.arr[5,3])); //this raises an exception
except
writeln ('An exception has taken place be because 5,3 does not exist.');
end;
try
writeln('5,7:'+Pchar(FCols.arr[5,7])); //this raises an exception
except
writeln ('An exception has taken place be because 5,7 does not exist.');
end;
FCols.Clear; writeln('after clear:');
try
writeln('4,7:'+Pchar(FCols.arr[4,7])); //this raises an exception
except
writeln ('An exception has taken place be because 4,7 does not exist.');
end;
FCols.Destroy;
ex.Destroy;
readln;
end.