Je dois diviser une chaîne en une TStringList avec des sous-chaînes de longueur fixe.Une méthode rapide pour diviser une chaîne en parties de longueur fixe dans Delphi
Actuellement j'utilise:
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;
Cela fonctionne, mais semble être lent. Une idée meilleure/plus rapide?
Modifié: Profilage des résultats:
Le gain de vitesse est assez impressionnant. Voici les résultats de mon profilage (subjectif).
Taille des données: 290KB, FixedLen: 100:
- Code d'origine: 58 ms
- Heffernan: 1 ms
- Deltics: 1 ms
Taille des données: 2805KB, FixedLen : 100:
- Code d'origine: 5803 ms
- Heffernan: 5 ms
- Deltics: 4 ms
Évidemment, l'appel 'Delete' n'est pas nécessaire. –
C'est Rud-y, pas Rud-i. Je parie que vous pourriez voir cette différence? –