Witam. Chcę zrobić sortowanie listy kontaktów komponentu EasyGG. Robię to następująco:
```delphi
procedure TForm1.SortByStatus(iLow, iHigh : Integer);
var
Temp: TUser;
i, j, x: Integer;
begin
for i := iHigh downto iLow do
if im.users.Items[i].Status in [usGGWithMe, usAvailable, usBusy, usDND] then
begin
for j := i - 1 downto iLow do
if im.users[j].Status = usNotAvailable then
begin
Temp := im.Users[i];
im.users[i] := im.users[j];
im.users[j] := Temp;
end;
end;
x := 0;
for i := iHigh downto iLow do
if im.users[i].Status in [usGGWithMe, usAvailable, usBusy, usDND] then
begin
x := i - iLow + 1;
Break;
end;
if (x = 0) or (x = iHigh - iLow + 1) then
SortByName(iLow, iHigh)
else
begin
SortByName(iLow, x - 1);
SortByName(x, iHigh);
end;
end;
procedure TForm1.SortByName(iLow, iHigh : Integer);
var
Temp : TUser;
x: string;
iLo, iHi : Integer;
begin
iLo := iLow;
iHi := iHigh;
x := im.users[(iLow + iHigh) div 2].Name;
repeat
while AnsiLowerCase(im.users[iLo].Name) < AnsiLowerCase(x) do
Inc(iLo);
while AnsiLowerCase(im.users[iHi].Name) > AnsiLowerCase(x) do
Dec(iHi);
if iLo <= iHi then
begin
Temp := im.users[iLo];
im.users[iLo] := im.users[iHi];
im.users[iHi] := Temp;
Inc(iLo);
Dec(iHi);
end;
until iLo > iHi;
if iHi > iLow then
SortByName(iLow, iHi);
if iLo < iHigh then
SortByName(iLo, iHigh);
end;
jednak przy kompilacji wyskakuje mi błąd:
[ERROR] main.pas(175): Cannot assign to read-only property.
Co robię źle ? Jaki moze być inny sposób na sortowanie listy według statusów i imion ?