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?
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.