Stringlisten beginnen bei 0, das ist so schon ok.
Durch die Zuweisung
SLSONumber[i] := s;
kann sich die Reihenfolge der Einträge in der Liste (zumindest theoretisch) verändern. Vermutlich mag die Liste das so nicht. Was passiert, wenn Du Deine Routine so abänderst?
Delphi-Quellcode:
const
SOIdLen = 8;
var
i : Integer;
s : String;
len : Integer;
begin
SLSONumber.Sorted := False; // <-neu
if SLSONumber.Count > 0 then begin
for I := 0 to SLSONumber.Count -1 do begin
s := SLSONumber[i];
len := length(s);
if len > SOIdLen then begin
Delete(s, 9, len - SOIdLen);
SLSONumber[i] := s;
end;
end;
end;
SLSONumber.Sorted := True; // <-neu
end;