[fpc-pascal] Question on how to avoid memory trouble using FindFirst(), FindNext() and FindClose()

Marco van de Voort marcov at stack.nl
Sat Feb 3 16:38:19 CET 2007


> Yes it will, because the reallocations don't happen as often. 
> The sorting introduces an overhead anyway, whether you set capacity or not.

Yes, but I was talking about slowness in general, not just from the heap.

And TStringList with those huge internal list has to move on avg half of the
array. If TStringList had an extra indirection (array of ptr to blk of ptrs)
it would be less so.
 
> The correct procedure IMHO is
> - Set capacity
> - Load
> - Sort

> I tested such things with an N^3 algorithm for my daytime job, and the
> difference is very noticeable.

With a single array or a multilevel one? 
 
> All this doesn't exclude that a specialized class may be more suitable for
> the job.

To be honest, the only good point of TStringList seems to be that it is
default available on all Object Pascal. The specialised stuff (splitting
strings) is also plagued with oddities. (most notably the fact that
characters under space are always used as separator)

> I just want to illustrate that, if programmed correctly, TList,
> TStringList and friends can still get you a long way...

I think that the lengths to which people will go to stick to them paints
what is needed to make a serious effort to make them legacy.

There should be a set of container classes in a separate unit (a unit not
existing in Delphi most notably) that is Open Source and works on Delphi
too.




More information about the fpc-pascal mailing list