Не работает Функция Sort в TList
function TMyList.compare(Item1,Item2:Pointer):Integer;
begin
...
if(...)then Result:=-1
else if(...)then Result:=1
else Result:=0
end;
constructor TMyList.create();
begin
List:=TList.create;
end;
...
procedure TMyList.sort();
begin
List.sort(@compare)
end;
но при компиляции возвращается ошибка:
Error: Incompatible type for arg no. 1: Got "<procedure variable type
of function(Pointer, Pointer):LongInt of object;Register>",
expected "<procedure variable type of function(Pointer,
Pointer):LongInt;Register>"
В Delphi функция работает безупречно.
Нигде найти ответа не смог.
Может кто знает в чем причина?
Функция Sort в TList
Модератор: Модераторы
Помойму функция должна быть вне класса, тоесть:
function compare(Item1,Item2:Pointer):Integer;
Конкретно с этой не работал, но такие встречались.
function compare(Item1,Item2:Pointer):Integer;
Конкретно с этой не работал, но такие встречались.
Да, делал и вне класса. Результат тот же 
Хм. У меня fpc 2.2.3 вот это компилирует без проблем:
В классе выдает ошибку.
Код: Выделить всё
function Ccompare(Item1,Item2:Pointer):Integer;
begin
//...
//if(...)then Result:=-1
//else if(...)then Result:=1
//else
Result := 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
List:= TList.create;
List.Sort(@Ccompare);
end;
В классе выдает ошибку.
Функция Compare была вложена в процедуру.
Вынес из процедуры и все заработало.
А Delphi и так работало.
Спасибо
Вопрос решен.
Вынес из процедуры и все заработало.
А Delphi и так работало.
Спасибо
