Some time ago there was a discussion about the data type given back by the "length" function.
Several reasons were given for the type beeing a *signed* integer.
But what about High() and Low()?
Shouldn't they give back signed integers too for the same reasons?
Especially, when I have a dynamic array like
--------------------------------
var MyArray : array of ...
...
for i := Low(MyArray) to High(MyArray) do
MyArray[i] := ...--------------------------------
I now have to prepend this with a
--------------------------------
if Length(MyArray)0 then..
--------------------------------
because otherwise I would get an error in case the length is 0 because Low() and High() both give back 0.
The result of both functions is the same as if the array had exact one element.
I find this quite illogical and would prefer if High() gives back a value less than Low() in this case so that the above for-loop would not be entered at all without the need to prepend it with an if-condition.
For example, setting High() to -1 while Low() to 0 for empty dynamic arrays would avoid this special case.
