Opi.
Początkowo też robiłem listę w pliku ini, jednakże odczytanie jej gdy wpisów jest ponad 1000 to około 2 minuty - makabra.
O wiele łatwiej jest zdefiniować jakiś rekord i zapisywać-odczytywać rekordy.
type
gracz_rekord = record // inicjacja typu rekordu //
login: integer;
pass: integer;
punkty: integer
end;
var
MainForm1: TMainForm1;
gracz: array[1..10000] of gracz_rekord;
gracz_plik: file of gracz_rekord;
i: integer;
------------------------A tu procedurki odczyt-zapis----------
procedure TMainForm1.ButtonZapiszPlikClick(Sender: TObject);
begin
AssignFile(gracz_plik,'gracze.bzd');
Rewrite(gracz_plik);
for i:=1 to 10000 do
begin
write(gracz_plik,gracz[i]);
end;
CloseFile(gracz_plik);
LabelStatus.Caption:='Zapisano dane do pliku.';
end;
procedure TMainForm1.ButtonLoadClick(Sender: TObject);
begin
AssignFile(gracz_plik,'gracze.bzd');
Reset(gracz_plik);
for i:=1 to 10000 do
begin
read(gracz_plik,gracz[i]);
end;
CloseFile(gracz_plik);
LabelStatus.Caption:='Odczytano dane z pliku.';
end;
Po wczytaniu rekordów, sortujesz je i wszystko gra.
---------------------U Ciebie może to być przykładowo:----------------------
Type
Moj_rekord = Record
Header_A_Z : string;
cos :string;
cos2 :string;
cos3 :string;
end;
var
MaxWpisow : Cardinal;
Lista :array [1..MaxWpisow] of Moj_rekord;
TMP : Moj_rekord;
//itd...
Potem możesz to sortować, używając zmienną Header_A_Z
for I:=MaxWpisow-2 downto 0 do begin
for J:=1 to I+1 do begin
if comparetext(Lista [j+1].Header_A_Z,Lista [j].Header_A_Z)<0 then
begin
TMP:=Lista [J];
Lista [J]:=Lista [J+1];
Lista [J+1]:=TMP;
end;
end;
end;
Pozdrawiam.