Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.035 Beiträge
 
Delphi 12 Athens
 
#13

AW: TStringlist von function() zurückgeben - nicht möglich?

  Alt 11. Mai 2022, 22:54
Ja, natürlich darf man das Objekt (TStringList) nicht intern freigeben, wenn man sie zurückgeben will.
Aber dann muß man auch dafür sorgen, dass der Aufrufer die Liste freigibt.

Ist aber auch "unschön", weil man ohne gute Dokumentation nie weiß, ob das Result einer aufgerufenen Methode freigegeben werden muß, oder nicht.
Darum sollte man besser den Namen der Methode so wählen, damit daraus erkennbar ist, dass diese Liste "erstellt" wird. (z.B. Create im Name)

Alternativ speichert man sich das Result intern (global) und gibt sie dann später frei.
Hier wird es dann spaßig, wenn gleichzeitig mehrere Rückgaben dieser Methode verwendet werden sollen. (vor allem, wenn dann alles immer die Selbe Liste zurückgibt und somit der vorherige Aufruf ungültig würde)

Sicherheitshalber machen es daher Viele so, dass man die Liste rein gibt, welche gefüllt werden soll.



Ansonsten:

* z.B. eine IStringList, IStrings oder sowas als Rückgabe, da Interfaces mit automatischer Freigabe

* bzw. ich verwende für sowas ein TArray<string> als Result
* * wird automatisch Speicherverwaltet
* * und wenn der Aufrufer es braucht, kann er es direkt in ein For-In geben, oder in eine eigene StringList per AddStrings übernehmen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat