[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