About pointer arithmetic:
IMO memory is an array. So for me it is quite natural that P^ and P[0] are the same.

You are missing the point. If you already *know* that you are dealing with a pointer (to an array), then of course you may use this workaround (it's nothing else, because if I want to specify the whole array why should I use the first element only?). It was stated here many times that the user should not care about how these dynamic arrays are handled but in reality he has to.

And even if he is aware of it the syntax is not logical. If the first element of the array is not zero, you cannot use your workaround. You have to check the numbering first and if you change this later you have to change your P[0] syntax too. Or you use P[low(P)] (again I am not sure whether I can use "low(P)" in this construct or whether I have to use "low(P^)". But then it already has become realy awkward. You should be able to use an unambiuous syntax to specify the whole array which does not seem to exist anymore.

Either the (hidden) pointer to array logic is fully transparent (which means, the user can use the same syntax as for standard arrays) or the user should know about it but then it should not be hidden. Now we have a mix of both.

The only disturbing is the automatic dereferencing of pointer to record/object in Delphi mode, where you can use PtrRect^.Left and PtrRect.Left.
But that only works in delphi mode, which I avoid.

Why is this more disturbig than for arrays? It's the same story.

Great power comes with great responsibility.

Yes. Then use C or assembler. You are "responsible" for everything and you cannot expect any help from the compiler.

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to