Ich hab's mal selbst probiert:
Delphi-Quellcode:
function TTestClassA.getListe: TList;
var
List : TList;
begin
new(PTestRecord);
List := TList.Create;
PTestRecord^.FeldA := 'Hallo';
PTestRecord^.FeldB := 'Test';
PTestRecord^.FeldC := 1;
List.Add(PTestRecord);
Result := List;
List.Free;
end;
procedure TTestClassA.Destroy;
begin
Dispose(PTestRecord);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
List : TList;
TestClassA : TTestClassA;
PTestRecordKopie : ^TTestRecord;
begin
TestClassA := TTestClassA.Create;
List := TestClassA.getListe;
PTestRecordKopie := List.Items[0];
Label1.Caption := PTestRecordKopie^.FeldA;
List.Free;
TestClassA.Destroy;
end;
PTestRecord in TTestClassA müsste als Membervariable von TTestClassA definiert werden damit sie in Destroy zerstört werden kann.
Stimmt das so?
Danke und Gruss
Tom