[fpc-pascal] Any chance to add the TStringBuilder to FCL?
Jürgen Hestermann
juergen.hestermann at gmx.de
Mon Apr 18 08:57:41 CEST 2016
Am 2016-04-16 um 19:39 schrieb Dmitry Boyarintsev:
> The problem is with using "unsigned" as an index (rather than zero- vs one- based arrays)
> Take a while loop as an example, where index can change multiple times.
> Current solution:
> while i>=0 do
> if cond then dec(i);
> dec(i);
> end;
> Unsigned index solution
> while i>=0 do
> if cond then if i>0 then dec(i);
> if i>0 then dec(i);
> end;
> Without these checks, unsigned integer would loop over to $FFFFFFFF and will continue.
That looks to my like an very artifical example.
I never came over a loop where I (conditionally)
decremented the index twice.
But of course, if you have such a case, then you
can only use signed intergers.
But in all the following cases I could used an unsigned
integer (when having 1-based arrays):
1.) for i := low(array) to high(array)
2.) repeat or while loops where the index is in- or
decremented by a maximum of 1 (which IMO is the case
in 99,9% of all such loops).
3.) When storing an array index into a variable for later use.
Nevertheless, using unsigned integers was only one aspect
of 1-based arrays. The main one for me was, that it is
much more intuitive and therefore less error prone.
I already often had errors when calculating indices for 0-based arrays.
And why was a directive implemented to use 0-based indices
even for strings but none for 1-based indices in dynamic arrays?
IMO the latter would be much more desired.
More information about the fpc-pascal
mailing list