Doug Chamberlin wrote:
Duncan Parsons wrote:
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.
+1

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"!

All right, every one is having a go at this, so my suggestion is:

Option 1:

array(0..Some_constant   key_word_or_directive ) of ....

So the Key word or compiler directive tells the compiler to create and set "Some_constant" to the number of elements, rather than to expect to find the constant existing already. (Or, if it suits the complier better, require the constant to be defined, just overwrite the value)

The point being that you have a definite instruction to set the value of the bounds, rather than just leaving something out, and you have a constant to use as an upper bound.

Option 2:

As it is just a convenience feature, do it in the IDE.  Given

Some_constant = 0;
array(0..Some_constant) of .....

Then have a code completion feature to reset Some_constant to the correct value. (Maybe even write the Some_constant declaration if it doesn't exist, for that matter.)

This has the disadvantage that you have to use the Lazarus IDE (but then, why wouldn't you ?), and the major advantage that no one has to stuff around with the compiler at all - or it's specification or documentation, for that matter. Much better to load conveniences into the IDE and keep the compiler "clean".

Just my 2c worth.

John Sunderland


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to