| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | Program TestList;{$mode objfpc}{$h+}Uses classes;const a1 : pchar = '0';      a2 : pchar = '1';      a3 : pchar = '2';      a4 : pchar = '3';      a5 : pchar = '4';      a6 : pchar = '5';      a7 : pchar = '6';      a8 : pchar = '7';      a9 : pchar = '8';      a10 : pchar = '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 (Pchar(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.
 |