Undocumented SetLength functionality

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Undocumented SetLength functionality

Torsten Bonde Christiansen
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.

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Undocumented SetLength functionality

Free Pascal - General mailing list
Torsten Bonde Christiansen <[hidden email]> schrieb am Di., 15. Mai 2018, 12:03:
Is this a feature, bug or undocumented behaviour?

This is a feature and absolutely by design. 


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

While it's not explicitly mentioned it's at least used in one f the examples for dynamic arrays in the language guide: https://freepascal.org/docs-html/current/ref/refse14.html#QQ2-38-57
Maybe this can indeed be clarified a bit. 

Regards, 
Sven 

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Undocumented SetLength functionality

Michael Van Canneyt


On Tue, 15 May 2018, Sven Barth via fpc-pascal wrote:

> Torsten Bonde Christiansen <[hidden email]> schrieb am Di., 15. Mai 2018,
> 12:03:
>
>> Is this a feature, bug or undocumented behaviour?
>>
>
> This is a feature and absolutely by design.
>
>
>> 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
>
>
> While it's not explicitly mentioned it's at least used in one f the
> examples for dynamic arrays in the language guide:
> https://freepascal.org/docs-html/current/ref/refse14.html#QQ2-38-57
> Maybe this can indeed be clarified a bit.

Indeed. Please enter a bugreport so I do not forget it.

Michael.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Undocumented SetLength functionality

Free Pascal - General mailing list
Michael Van Canneyt <[hidden email]> schrieb am Di., 15. Mai 2018, 14:29:


On Tue, 15 May 2018, Sven Barth via fpc-pascal wrote:

> Torsten Bonde Christiansen <[hidden email]> schrieb am Di., 15. Mai 2018,
> 12:03:
>
>> Is this a feature, bug or undocumented behaviour?
>>
>
> This is a feature and absolutely by design.
>
>
>> 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
>
>
> While it's not explicitly mentioned it's at least used in one f the
> examples for dynamic arrays in the language guide:
> https://freepascal.org/docs-html/current/ref/refse14.html#QQ2-38-57
> Maybe this can indeed be clarified a bit.

Indeed. Please enter a bugreport so I do not forget it.


Regards, 
Sven 

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Undocumented SetLength functionality

Michael Van Canneyt


On Fri, 18 May 2018, Sven Barth via fpc-pascal wrote:

> Michael Van Canneyt <[hidden email]> schrieb am Di., 15. Mai 2018,
> 14:29:
>
>>
>>
>> On Tue, 15 May 2018, Sven Barth via fpc-pascal wrote:
>>
>>> Torsten Bonde Christiansen <[hidden email]> schrieb am Di., 15. Mai
>> 2018,
>>> 12:03:
>>>
>>>> Is this a feature, bug or undocumented behaviour?
>>>>
>>>
>>> This is a feature and absolutely by design.
>>>
>>>
>>>> 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
>>>
>>>
>>> While it's not explicitly mentioned it's at least used in one f the
>>> examples for dynamic arrays in the language guide:
>>> https://freepascal.org/docs-html/current/ref/refse14.html#QQ2-38-57
>>> Maybe this can indeed be clarified a bit.
>>
>> Indeed. Please enter a bugreport so I do not forget it.
>>
>
> Done: https://bugs.freepascal.org/view.php?id=33759

Thank you. With examples and all, I couldn't wish for more... :)

Michael.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal