Auf Arrays würde ich ganz verzichten und Pointer nehmen und
Arbeite dann mit TList und lass diese Liste sortieren, das geht wesentlich schneller.
http://www.delphipraxis.net/147610-d...schreiben.html
Delphi-Quellcode:
Type PMeinTyp=^TMeinTyp;
TMeinTyp=Record
i1:integer;
s1:String;
//usw.
End;
procedure ShowData(aList:Tlist);
Var cnt1:integer;
begin
if not Assigned(aList) then
exit;
with Form1.ListBox1 do
begin
try
items.BeginUpdate;
Clear;
for cnt1:=0 to aList.Count-1 do
with PMeinTyp(aList[cnt1])^ do
Items.Add(inttostr(i1)+','+s1);
finally
items.EndUpdate;
end;
end;
end;
Procedure AddMeinTyp(Var aList:TList;X:integer;irgendwas:String);
Var
Tmp:PMeinTyp;
begin
try
if not Assigned(aList) then
aList:=TList.Create;
Tmp:=New(PMeinTyp);
Tmp.i1:=X;
Tmp.s1:=irgendwas;
aList.Add(Tmp);
except
FreeandNil(aList);
end;
end;
function MySortInteger(Item1, Item2: Pointer): Integer;
begin
Result := Integer(Item1^) - Integer(Item2^);
end;
procedure TForm1.Button1Click(Sender: TObject);
Var
i,cnt1:integer;
S:String;
DieListe:TList;
begin
try
Randomize;
for cnt1 := 0 to 10000 do
begin
i:=random(cnt1);
AddMeinTyp(DieListe,i,' irgendwas '+inttostr(i));
end;
ShowData(DieListe);
showMessage('Sortieren');
DieListe.Sort(@MySortInteger);
ShowData(DieListe);
showMessage('Fertig');
finally
if Assigned(DieListe) then
FreeandNil(DieListe);
end;
end;