mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 19:49:27 +02:00
102 lines
2.1 KiB
ObjectPascal
102 lines
2.1 KiB
ObjectPascal
Program TestList;
|
|
|
|
{$mode objfpc}{$h+}
|
|
|
|
Uses classes;
|
|
|
|
const a1 : PAnsiChar = '0';
|
|
a2 : PAnsiChar = '1';
|
|
a3 : PAnsiChar = '2';
|
|
a4 : PAnsiChar = '3';
|
|
a5 : PAnsiChar = '4';
|
|
a6 : PAnsiChar = '5';
|
|
a7 : PAnsiChar = '6';
|
|
a8 : PAnsiChar = '7';
|
|
a9 : PAnsiChar = '8';
|
|
a10 : PAnsiChar = '9';
|
|
|
|
Var List : TList;
|
|
StartMem,Runner : longint;
|
|
|
|
Function ACompare (P1,P2 : Pointer) : Integer;
|
|
|
|
Type PByte = ^Byte;
|
|
|
|
begin
|
|
Result:=PByte(p1)^-PByte(P2)^;
|
|
end;
|
|
|
|
Procedure DumpMem;
|
|
|
|
begin
|
|
Writeln (' usedbytes : ',getfpcheapstatus.currheapused,' (=',getfpcheapstatus.currheapused-StartMem,' Bytes lost).')
|
|
end;
|
|
|
|
Procedure DumpList;
|
|
|
|
Var I : longint;
|
|
|
|
begin
|
|
Write ('Count/Capacity : ',List.Count,'/',List.Capacity);dumpmem;
|
|
If List.Count>0 then
|
|
begin
|
|
For i:=0 to List.Count-1 do
|
|
if assigned(List.items[I]) then write (PAnsiChar(List.items[i])) else write ('*');
|
|
Writeln;
|
|
end;
|
|
end;
|
|
|
|
|
|
begin
|
|
StartMem:=getfpcheapstatus.currheapused;
|
|
Writeln ('Creating List');
|
|
List:=TList.Create;
|
|
DumpList;
|
|
Writeln ('Increasing capacity to 10');
|
|
List.Capacity:=10;
|
|
DumpList;
|
|
Writeln ('Setting capacity to zero');
|
|
List.capacity:=0;
|
|
DumpList;
|
|
Writeln ('Adding 10 elements in random sequence.');
|
|
List.add (a2);
|
|
List.add (a1);
|
|
List.add (a3);
|
|
List.add (a8);
|
|
List.add (a5);
|
|
List.add (a9);
|
|
List.add (a4);
|
|
List.Add (a8);
|
|
List.Add (a7);
|
|
List.Add (a6);
|
|
Dumplist;
|
|
Writeln ('Removing Third element.');
|
|
List.Delete(2);
|
|
DumpList;
|
|
Writeln ('Inserting "0" at third place');
|
|
List.Insert (2,a1);
|
|
DumpList;
|
|
Writeln ('Setting elmts 3 to 6 to Nil.');
|
|
For Runner:=2 to 5 do List.Items[Runner]:=Nil;
|
|
Dumplist;
|
|
Writeln ('Packing list');
|
|
List.Pack;
|
|
DumpList;
|
|
Writeln ('Setting capacity to count');
|
|
List.Capacity:=List.Count;
|
|
DumpList;
|
|
Writeln ('Expanding list');
|
|
List.Expand;
|
|
DumpList;
|
|
Writeln ('Index of ',a1,' : ',List.IndexOf(a1));
|
|
Writeln ('Removing "',A1,'" from list.');
|
|
List.Remove (a1);
|
|
DumpList;
|
|
Writeln ('Sorting List.');
|
|
List.Sort (@ACompare);
|
|
DumpList;
|
|
Writeln ('Freeing list.');
|
|
List.Free;
|
|
DumpMem;
|
|
end.
|