Ich finde immer noch, das Beispiel ist ungeeignet, da alles genau so ist, wie man es auch erwartet. Wenn nil, dann length=0...wenn out, dann geht nix rein, also auch nil--> length=0, wenn das setlength vor dem write steht, stimmt auch die Länge=10 usw...
Mit dem Beispiel wollte ich zeigen, dass die Rückgabe von compilerverwalteten Typen sich wie eine var-Übergabe vehält, wo doch semantisch gesehen eine out-Übergabe angemessen wäre:
Zitat von
http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/EN/html/devcommon/parameters_xml.html:
With an out parameter, however, the initial value of the referenced variable is discarded by the routine it is passed to. The out parameter is for output only; that is, it tells the function or procedure where to store output, but doesn't provide any input.
"output only" und "where to store output" hört sich für mich irgendwie schon nach Rückgabewert an.