Ja, ist kürzer, aber es hat nicht die selbe Funktion, denn der originale Code macht nichts, wenn wenn nicht mindestens ein Zeichen übrig bleibt.
So geht es auch.
Delphi-Quellcode:
for i := 0 to Liste.Count - 1 do begin
Liste.Add(LeftStr(Liste[i], 8));
Liste.Delete(i + 1);
end;
Unter der Annahme/Bedingung:
* die Liste ist sortiert
* der gekürzte String ist in der Sortierung immer kleiner, also landet immer vor dem Originalstring
* durch dupIgnore würde der Code knallen, wenn einer/mehrere der Strings nicht länger als 8 ist (denn dann kommt immer ein Leerstring '' raus und die Indize stimmen dann nicht mehr)
Aber wie gesagt, es fehlt noch eine Bedingung.
Delphi-Quellcode:
for i := 0 to Liste.Count - 1 do
if Length(Liste[i]) > 8 then begin
...