[fpc-pascal] Undocumented SetLength functionality
Torsten Bonde Christiansen
tc at epidata.info
Mon May 14 15:23:04 CEST 2018
Hi All.
I just discovered that SetLength(Var S: Array; NewLength: Integer) has
an undocumented (appenrently unlimited number of) overloaded functions.
Any multi dimentional arrays may be sent to SetLength with appropriate
dimension sizes. Making the following possible:
program SetArrayLength;
var
Int2Array: Array of Array of Integer;
Int3Array: Array of Array of Array of Integer;
// ...etc
begin
SetLength(Int2Array, 5, 5);
SetLength(Int3Array, 5, 5, 5);
// ... etc
Int2Array[2][2] := 2;
Int3Array[2][2][2] := 3;
WriteLn(IntArray[2][2]);
WriteLn(IntArray[2][2][2]);
end;
Is this a feature, bug or undocumented behaviour?
Afair, this was allowed back in Delphi7 (which is where i copied some of
my old code from), but i'm not sure whether it was documented.
At least the current RTL documentation on SetLength does not include
other variants than the one with just a single length specifier.
https://www.freepascal.org/docs-html/rtl/system/setlength.html
Best regards,
Torsten.
More information about the fpc-pascal
mailing list