![]() |
TList als Rückgabeparameter [erledigt]
Hallo zusammen,
ich möchte innerhalb einer Funktion ein paar werte in einer TList speichern. Am Ende der Funktion möchte ich die gefüllte Liste als Rückgabewert an den Result übergeben. Das mach ich folgendermaßen: aufrufende Zeile:
Delphi-Quellcode:
die Funktion SaveList:
// locale Variable vom Typ TList
TempList := SaveList();
Delphi-Quellcode:
function TfmMain.SaveList: TList;
var Lst : TList; begin Lst := TList.Create; try New(Pointer); try for i := 0 to Zähler - 1 do begin Pointer^.Variable := Fülle mit irgendwas ... Lst.Add(Pointer); end; except Dispose(Pointer); end; finally Result := Lst; // habs auch mit Result.Assign(Lst) versucht Lst.Free; end; end; Der Punkt ist, dass die Listeninhalte aus der Funktion nicht an die TempListe übergeben werden. Hoffe ihr könnt mir helfen. Gruß, Moony |
Re: TList als Rückgabeparameter
Du gibst einen Zeiger auf die Liste zurück und zerstörst diese anschliessend
|
Re: TList als Rückgabeparameter
Ich will ja den kompletten Inhalt der Liste an die andere übergeben, sprich kopieren. Danach brauche ich dann diese Liste nicht mehr.
|
Re: TList als Rückgabeparameter
Folgendes ist sinnvoller...
Delphi-Quellcode:
procedure TfmMain.SaveList(Lst: TList);
begin New(Pointer); try for i := 0 to Zähler - 1 do begin Pointer^.Variable := Fülle mit irgendwas ... Lst.Add(Pointer); end; except Dispose(Pointer); end; end; procedure TfmMain.Aufruf; var List:TList; begin List:=TList.Create; try SaveList(List); finally List.Free; end; end; |
Re: TList als Rückgabeparameter
Ich würde den Parameter noch als const definieren.
|
Re: TList als Rückgabeparameter
Hallo,
außerdem ist es etwas sinnlos, einen Pointer zu erstellen, ihn zuzuweisen und anschließend wieder freizugeben. Gruß xaromz |
Re: TList als Rückgabeparameter
Zitat:
|
Re: TList als Rückgabeparameter
Das habe ich mir auch überlegt, aber so wie du die liste übergibst ist das doch nur callbyvalue. Das heißt ich übergebe den inhalt der liste an die funktion aber nicht die liste selbst. Dabei müßte ich doch ein callbyreference machen, oder nicht?
Hierbei muß aber die bezeichnung der variable identisch mit der übergabeliste sein. ich möchte diese funktion aber nutzen und mindestens mit zwei unterschiedlichen listen arbeiten. Sprich mal
Delphi-Quellcode:
Und mal
TempListe := SaveListe();
Delphi-Quellcode:
MeineListe := SaveListe();
|
Re: TList als Rückgabeparameter
Objekt-Parameter werden automatisch ByReference übergeben.
|
Re: TList als Rückgabeparameter
Dann übergebe doch die Zielliste wie schon geschrieben als Parameter.
Delphi-Quellcode:
SaveListe( TempListe);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz