Hallo
Beim Freigeben von Zeiger habe ich nicht ganz den Durchblick. Gegeben ist folgender Code (von zwei Klassen):
Delphi-Quellcode:
function TTestClassA.getListe: TList;
var
List : TList;
PTestRecord : ^TTestRecord;
begin
new(PTestRecord);
List := TList.Create;
PTestRecord^.FeldA := 'Hallo';
PTestRecord^.FeldB := 'Test';
PTestRecord^.FeldC := 1;
List.Add(PTestRecord);
Result := List;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
List : TList;
TestClassA : TTestClassA;
PTestRecord : ^TTestRecord;
begin
TestClassA := TTestClassA.Create;
List := TestClassA.getListe;
PTestRecord := List.Items[0];
Label1.Caption := PTestRecord^.FeldA;
Dispose(PTestRecord);
end;
Soll ich nun den Zeiger wie ich's gemacht habe in der zweiten Funktion disposen oder macht man in solchen Fällen in der TestClassA eine Prozedur, die dann einfach dispose(PTestRecord) aufruft (und in der Button1Click-Prozedur aufgerufen wird)?
Die selbe Frage stellt sich natürlich auch wenn man statt mit TList mit TObjectList arbeiten würde (und dann Objekte auflistet). Dann würde aber nur der Weg über eine Funktion der Klasse TTestClassA funtktionieren, oder?
Ich wäre froh wenn mir jemand den "Standardweg" aufzeigen könnte.
Danke und Gruss
Tom