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... _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal