I need to split a string to a TStringList with fixed-length sub-strings.
Currently I use:
procedure StrToStringList(ASource: string; AList: TStrings; AFixedLen: Integer);
begin
Assert(Assigned(AList));
while Length(ASource) > AFixedLen do
begin
AList.Add(LeftStr(ASource, AFixedLen));
Delete(ASource, 1, AFixedLen);
end;
AList.Add(ASource);
end;
This works, but seems to be slow. Any better / faster idea?
Edited: Profiling of the results:
The speed gain is quite impressive. Here are the results of my (subjective) profiling.
Data size: 290KB, FixedLen: 100:
- Original code: 58 ms
- Heffernan: 1 ms
- Deltics: 1 ms
Data size: 2805KB, FixedLen: 100:
- Original code: 5803 ms
- Heffernan: 5 ms
- Deltics: 4 ms
Delete
call is unnecessary. – Validate