Re: Funktionsrückgabewert: Array
25. Sep 2008, 13:56
Dynamische Arrays als Rückgabewert sind programmiertechnisch mehr als ineffizient, da der Rückgabewert immer kopiert wird. Es lohnt sich somit definitiv nicht, wenn dann eher als VAR Parameter übergeben und dann in der Funktion füllen.
ABER: dynamische Arrays etc. sind nur noch an wenigen Stellen sinnvoll einsetzbar, da die Nachteile überwiegen:
Vorteile:
- Member sind vom direkten Typ
Nachteile:
- man muss genau sein beim Handling, vor allem bei Übergaben, da es sonst leicht und viel kopiert wird von Delphi und somit der Speicherverbrauch steigt
- Erhöhter Aufwand beim entfernen einzelner Member
- Man explizit drauf achten by reference Übergaben zu deklarieren, damit man das Array in Funktionen ändern kann, ansonsten arbeitet man auf einer Kopie
TList und deren Derivate ersetzen die dynamischen Arrays mit einer z.T. effizienteren Verwaltung (löschen eines Elementes schiebt in TList nur die Zeiger, in einem Array Of müssen die Elemente, also der Inhalt, bewegt werden, was meist ungemein grösser ist)
|