Ich habe das Gefühl, das mit TList gut Fehler eingebaut werden können, das man mit New und Dispose alles selber machen muss.
Bei der Array mache ich SetLength(xxx, 0) und alles ist aufgeräumt.
Code: Alles auswählen
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
List: TList;
end;
PVector = ^TVector;
TVector = array[0..2] of single;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
List := TList.Create;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
z: integer = 0;
var
v: PVector;
begin
Inc(z);
New(v);
WriteLn(z);
v^[0] := 0;
v^[1] := z;
v^[2] := 0;
List.Add(v);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
v: PVector;
i: Integer;
begin
for i := 0 to List.Count - 1 do begin
v := List.Items[i];
WriteLn(v^[1]);
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
v: PVector;
i: Integer;
begin
for i := 0 to List.Count - 1 do begin
v := List.Items[i];
Dispose(v);
end;
List.Free;
end;