The Sort procedure in TStringList doesn't work correctly.
Original Reporter info from Mantis: kien_coi_1997
-
Reporter name: Nguyen Tien Trung Kien
Original Reporter info from Mantis: kien_coi_1997
- Reporter name: Nguyen Tien Trung Kien
Description:
I have written a procedure to sort a TStringList very carefully (in a project).
procedure SafelySort(L: TStringList);
var A: TStringList;
begin
A:=TStringList.Create;
A.Assign(L);
A.SaveToFile('b.txt');
A.Sort;
A.SaveToFile('a.txt');
L.Assign(A);
end;
And this is b.txt
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam5.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam2.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam14.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam4.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam1.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam3ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam2ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam7.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam4ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam12.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam1ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam13.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam11.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam3.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam8.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam5ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam9.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam10.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam0.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam6.out
This is a.txt
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam0.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam10.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam11.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam12.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam13.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam14.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam1ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam1.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam2ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam2.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam3ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam3.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam4ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam4.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam5ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam5.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam6.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam7.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam8.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam9.out
You can see, the order is wrong, in many place, for example
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam1ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam1.out
I've tried to create a new file named 0.pas:
{$mode objfpc}
uses classes;
var L: TStringList;
begin
L := TStringList.Create;
L.LoadFromFile('b.txt');
L.Sort;
L.SaveToFile('c.txt');
L.Free;
end.
But it is worked!
this is c.txt
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam0.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam1.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam10.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam11.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam12.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam13.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam14.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam1ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam2.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam2ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam3.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam3ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam4.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam4ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam5.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam5ocen.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam6.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam7.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam8.out
/home/name/Documents/december/poland_xvi/archive/etap1/kam/out/kam9.out
How can two code be different?
Mantis conversion info:
- Mantis ID: 25378
- OS: Lubuntu
- OS Build: 13.10
- Platform: Linux
- Version: 1.0.10
- Monitored by: » Avishai (Avishai)