AClone()
Allgemeines
AClone() erlaubt es, ein Array zu kopieren.
Ein Array existiert normalerweise nur einmal, und die Zuweisung eines Arrays an eine andere Variable erzeugt in der Zielvariablen nur eine Referenz:
aDaten := {"heute", "morgen", "übermorgen"} aDaten2 := aDaten aDaten2[2] := "nie" ? aDaten[2] ==> "nie"
AClone() erzeugt eine Kopie des Arrays und weist diese einer Variablen zu.
Im Gegensatz zu ACopy() kopiert AClone() auch mehrdimensionale Arrays.
Syntax
AClone(aArray) => aGeklontesArray
Parameter
<aArray> ist ein Array, von dem eine identische Kopie erzeugt werden soll.
Rückgabewert
<aGekontesArray> ist eine identische Kopie von aArray.
Besonderheiten
Performanceschub bei grossen Arrays
Programmtechnisch kann es bei besonders grossen Arrays vorkommen, dass die Performance von AClone() schlecht ist. Es gibt die Möglichkeit, mit Var2Bin() und Bin2Var() AClone() zu simulieren:
vtemp:=var2Bin(atemp) afilt:=bin2var(vtemp)
anstelle von
aFilt := AClone(aTemp)
einfache und komplexe Datentypen
Einfache Datentypen (String, Numerisch, Logisch) in Array-Elementen werden kopiert, während bei komplexen Datentypen (Objekte) nur ein Verweis auf das Objekt kopiert wird. Ein Array-Element enthält ja nicht ein beliebiges Objekt, sondern nur einen Pointer auf das Objekt. AClone() kopiert diesen Pointer, und damit verweist auch das Array-Element im geklonten Array auf das gleiche Objekt:
aEins := {"a", 1, SetAppWindow()} aZwei := AClone(aEins) aEins[3]:title := "was neues" ? aZwei[3]:title => "was neues"
Um unabhängige Objekte zu erhalten, müsste das entsprechende Element neu zugewiesen werden:
aEins := {"a", 1, SetAppWindow()} aZwei := AClone(aEins) aZwei[3] := SetAppWindow() aEins[3]:title := "was neues" ? aZwei[3]:title => (der bisherige Titel)
Querverweise
benötigte DLLs bzw. Include-Dateien
XPPRT1.dll
Zuordnung