[fpc-pascal] Array clearing

Jürgen Hestermann juergen.hestermann at gmx.de
Tue Apr 4 15:43:54 CEST 2017

Am 2017-04-04 um 15:18 schrieb Jürgen Hestermann:
 > var MyArray : array of array of integer;
 > you can do:
 > SetLength(MyArray,3);
 > SetLength(MyArray[0],2);
 > SetLength(MyArray[1],3);
 > SetLength(MyArray[2],4);
 > So MyArray[0] points to an array of 2 integers,
 > MyArray[1] points to an array of 3 integers and
 > MyArray[2] points to an array of 4 integers.

The syntax of dynamic and static arrays are the same
although they should differ (because the involved pointers).
Therefore it is confusing and misleading.

For dynamic arrays
MyArray[0] should be MyArray^[0] and
MyArray[0,1] should be MyArray^[0]^[1]
and so on...

This would make it possible to distinguish between the pointer
(MyArray) and the data it points to (MyArray^).
Also MyArray^[0]^[1] would be a pointer while
MyArray^[0]^[1]^ would be the (static) array of integers.

But as you seldom access the pointers themself (they
are managed by the compiler) and because this automatic
derefencing of pointers for managed types has been defined
decades ago we have to live with this now...

More information about the fpc-pascal mailing list