Doug Chamberlin schrieb:
Must confess, I feel "arr:[0..end] of " makes more sense to me than
use of "var" or "..]" The latter suggests something forgotten or a typo.
I agree that just leaving out the ending limit is against the spirit of
Pascal.
I can live with the syntax of MyArray:[0..var] or MyArray:[0..end] but
I'd prefer a syntax that does not use a word, such as MyArray:[0..*] or
MyArray:[0..?]. That way there is no confusion about a user-defined word
and the use of the currently reserved words is not changed. In other
words, this is a situation that is exactly why we have punctuation and
not the cobol-ish "Declare MyArray to be from 0 to end of TSomeType"!
Since we already have an (dynamic) array syntax without any "[...]"
clause, I'd choose an way in between "array", "array[rangetype]" and
"array[from..to]", e.g. array[], array[const] or array[*] for arrays
with automatic bounds. In detail the "const" keyword is used similarly
in argument lists "array of const".
As already mentioned, I do not favor a [from..?] syntax, because then it
also should be possible to construct [?..to] arrays, for syntax
symmetry. When the array bounds are not named or literal constants, a
For loop will have to look like:
for i := low(MyArray) to high(MyArray) do
so that it doesn't matter which exact values low() and high() really
represent in code. That's why IMO a fixed lower bound of zero does no
harm. Any other loops, with fixed bounds, will either fail at compile
time or - even worse - produce wrong results, when the bounds are
changed in the array declaration but not in code.
DoDi
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus