Грузи файл в массив цкликом (или в TStringList), сортируй там (да хоть пузырьком) и сохраняй в новый:
Код:
procedure CopySorted(AFileIn, AFileOut : String);
var
L : TStringList;
I, J : Integer;
begin
L := TStringList.Create;
Try
L.LoadFromFile(AFileIn);
For I := 0 To L.Count-2 Do
For J := I + 1 To L.Count-1 Do
If Length(L[i]) > Length(L[J]) Then L.exchange(I,J);
L.saveToFile(AFileOut);
Finally
L.Free;
End;
end;