czesc, mam dynamiczna tablice Users typu
type
UserRec = record
Name: String;
Status: TGGUserStatusExt;
....
end;
i chce posortowac ja najpeir wg statusu, a potem wg nazwy (name). Moja funkcja sortujaca, to
procedure Quicksort(var arr: array of UserRec; Lewy,Prawy:integer); //Lewy - dolny zakres tablicy prawy gorny
var
i,j, Pomocnicza:integer;
WzgledemKtorej: String;
begin
i:=Lewy;
j:=Prawy;
WzgledemKtorej:=arr[(Lewy+Prawy) div 2].Name;
while i<=j do
begin
while arr[i].Name < WzgledemKtorej do i:=i+1;
while arr[j].Name > WzgledemKtorej do j:=j-1;
if i<=j then
begin
Pomocnicza:=listorder[i]; //listorder to tablica ktora okresla kolejnosc wyswietlania tablicy users.
listorder[i]:=listorder[j];
listorder[j]:=Pomocnicza;
i:=i+1;
j:=j-1;
end;
end;
if Lewy<j then
Quicksort(arr,Lewy,j);
if i<Prawy then
Quicksort(arr,i,Prawy);
end;
i tu napotkalem na 2 problemy.
- ta funkcja sortuje tylko wg nazwy, nie wiem jak sie zabrac za podwojne sortowanie, czyli najpierw wg statusu, potem nazwy.
- gdy uzywam tej funkcji gdy sortuje wg nazwy, to przy 71 jej elmentach za ktorąś rekurencja wywala mi blad, i delphi zaznaca na niebiesko fragment: " if i<Prawy then". Gdy sortuje 4 elementowa tablice to wsyzstko jest ok
to wazne koledzy :)
</delphi>