This behaviour comes from C syntax. The array is a pointer, which you dereference by using the square brackets. This is well defined syntax, nothing automatic or illogical about it. The only reason pascal programmers make mistakes with this is because they are less accustomed to using pointers.
It is illogical that I am able to enumerate a pointer as if it was an array. So the brackets do the dereferencing automatically. When I write X[1] it assumes I meant X^[1]. To the user it behaves the same as if X was an array instead of a pointer to an array. There is no difference in syntax which is wrong IMO. It's not wonder that many users think it *is* an array.
That's the same as if I could use square brackets for an integer and the compiler assumes I meant to pick up one of the bytes. Strict type checking was a fundamental goal of Pascal but is has now been weakended by C-style creaping into it. If you are forced to use the first element of an array in situatons where you wanted to specify the whole array it is illogical. And it's not that pascal programmers are less accustomed to pointers, but they are less accustomed to obscure compiler magic. It has become fashionable to *hide* such things ("you don't need to know the details") and the syntax doesn't tell the users either which provokes such mistakes.
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal