Better way to resize a TStringList?

delphi, tstringlist

Solution

Judging from the implementation of `TStringList.Assign`, there is no better way to do this. They basically call `Clear` and add the strings one by one.

You should of course put your code into a utility method:

procedure ResizeStringList(List : TStrings; ANewSize: Integer);
begin
...
end;

Or you could use a class helper to make your method appear to be part of `TStringList` itself.

Problem

I frequently find that I need to 'resize' a a `TStringList` to hold exactly N elements, either adding additional empty strings to the list, or deleting unneccessary ones. On a C++ STL container I could use the `resize` method, but as that doesn't seem to exist, I usually do somethings like this (warning: pseudocode!). ``` list.beginUpdate; while list.Count < requiredSize do begin list.add(''); end; while list.Count > requiredSize do begin list.delete(list.count-1); end; list.endUpdate; ``` Is there a much simpler way of doing this that I've overlooked?

Original source