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

Reply via email to