Das ist zwar technisch korrekt, nützt dem User aber nicht allzu viel, wenn er sich nicht darüber klar ist, dass Objekte und dynamische Arrays (nicht aber Strings !) technisch gesehen von sich aus schon Zeiger auf die enthaltenen Daten sind und nicht die Daten selbst repräsentieren. Da werden die Daten nicht kopiert. (Bei Strings auch nicht, die tun aber so als ob sie kopiert würden: "lazy copy").Michl hat geschrieben:Mit dem >var< bei der Parameterübergabe signalisiert man der Procedure/Function dass mit dem übergebenen Parameter gearbeitet werden soll, nicht mit einer Kopie von ihm.
Ein Objekt oder ein Array als nicht-var heißt nicht: "die enthaltenen Daten werden kopiert und Änderungen an den Daten sind beim Caller nicht sichtbar", sondern "der Zeiger wird kopiert und man kann das Objekt nicht (ohne kopieren der enthaltenen Daten) durch eine andere Instanz dieses Typs ersetzen". Bei "var" kann man also der variable eine andere Instanz des Objektes zuweisen.
-Michael