{$MODE OBJFPC}{$LONGSTRINGS ON}
uses
HeapTrc, SysUtils;
type
PItem = ^TItem;
TItem = record
Value: Integer;
Text: String;
end;
type
PItems = ^TItems;
TItems = array of PItem;
procedure PopulateItems(out AItems: PItems; ACount: Integer);
var
LItemIdx: Integer;
begin
New(AItems);
SetLength(AItems^, ACount);
for LItemIdx := 0 to ACount - 1 do
begin
New(AItems^[LItemIdx]);
AItems^[LItemIdx]^.Value := Random(100) + 1;
AItems^[LItemIdx]^.Text := Format('item no %d', [LItemIdx]);
end;
end;
procedure DisposeItems(var AItems: PItems);
var
LItemIdx: Integer;
begin
for LItemIdx := 0 to High(AItems^) do
Dispose(AItems^[LItemIdx]);
Dispose(AItems);
AItems := nil;
end;
procedure PrintItems(AItems: PItems);
var
LItemIdx: Integer;
begin
for LItemIdx := 0 to High(AItems^) do
WriteLn('Value: ', AItems^[LItemIdx]^.Value, ', Text: ', AItems^[LItemIdx]^.Text);
WriteLn();
end;
var
LItems: PItems;
begin
Randomize();
PopulateItems(LItems, 10);
PrintItems(LItems);
DisposeItems(LItems);
end.