Using SetLength with Arrays.
|
Smart pascal source code
type
TRec = record
F1 : Integer;
F2 : String;
end;
procedure WriteLnArray(a : array of TRec);
var
i : Integer;
begin
WriteLn(IntToStr(Length(a))+':{');
for i:=0 to High(a) do begin
if i>0 then
WriteLn(',');
WriteLn('(');
WriteLn(IntToStr(a[i].F1));
WriteLn(',');
WriteLn(a[i].F2);
WriteLn(')');
end;
WriteLn('}');
end;
{ TApplication }
procedure TApplication.RunApp;
var
i : Integer;
a : array of TRec;
Begin
WriteLnArray(a); // 0:{}
a.SetLength(3);
WriteLnArray(a); // 3:{(0,),(0,),(0,)}
a[0].F1:=1;
a[0].F2:='one';
a[1].F1:=2;
a[1].F2:='two';
a[2].F1:=3;
a[2].F2:='three';
WriteLnArray(a); // 3:{(1,one),(2,two),(3,three)}
a.SetLength(3);
WriteLnArray(a); // 3:{(1,one),(2,two),(3,three)}
a.SetLength(2);
WriteLnArray(a); // 2:{(1,one),(2,two)}
a.SetLength(3);
WriteLnArray(a); // 3:{(1,one),(2,two),(0,)}
a.SetLength(1);
WriteLnArray(a); // 1:{(1,one)}
a.Clear;
WriteLnArray(a); // 0:{}
a.SetLength(3);
WriteLnArray(a); // 3:{(0,),(0,),(0,)}