RosettaCodeData/Task/Collections/Pascal/collections-7.pascal

35 lines
685 B
Plaintext

Program ex34;
{ Program to demonstrate the TCollection.AtInsert method }
Uses Objects, MyObject; { For TMyObject definition and registration }
Var C : PCollection;
M : PMyObject;
I : Longint;
Procedure PrintField (Dummy : Pointer; P : PMyObject);
begin
Writeln ('Field : ',P^.GetField);
end;
begin
Randomize;
C:=New(PCollection, Init(120, 10));
Writeln ('Inserting 100 records at random places.');
For I:=1 to 100 do
begin
M:=New(PMyObject, Init);
M^.SetField(I-1);
If I=1 then
C^.Insert(M)
else
With C^ do
AtInsert(Random(Count), M);
end;
Writeln ('Values : ');
C^.Foreach(@PrintField);
Dispose(C, Done);
end.