[fpc-devel] Questions on TStringList.Find change (Mantis 28744)
Michael Van Canneyt
michael at freepascal.org
Mon Mar 21 20:55:55 CET 2016
On Mon, 21 Mar 2016, David Jenkins wrote:
> I just ran across the change that checks Sorted at beginning of find and
> exits if Sorted = False. This has caused some problems for us
>
> a) We have lists that are sorted manually and we'd like to continue keeping
> them sorted manually (and be able to call .insert()). This means not setting
> the sorted flag. But without setting 'sorted' we can no longer use find. We
> are sharing code between VCL and FPC - delphi compatibility has been broken.
>
> b) The change, in my opinion, hasn't solved the unpredictable response
> problem. There is still nothing to indicate to a caller that they have
> called the function inappropriately i.e. they do not know why find has
> returned false.
>
> Furthermore the documentation also indicates that if false is returned then
> 'Index' will contain the position where the string should be inserted. Index
> used to at least be within the range of FCount or 0. Now the value 'Index'
> is even more indeterminte as the code exits before Index has been set to
> anything. It has gone from possibly placing a string at a wrong location to
> possibly causing a crash with index out of range.
>
> It could be argued whether this is worse but it certainly doesn't seem to
> have made the situation any better for people blindly misusing Find an
> unsorted list - while at the same time breaking Delphi compatibility and the
> option to manually keep lists sorted.
>
> Thoughts?
We can introduce a property which disables the check, if you want.
Michael.
More information about the fpc-devel
mailing list