Использование функций класса TArray

Мне нужно отсортировать TArray<integer>, я добавил System.Generics.Collections в предложение uses, а затем попробовал следующий код:

var
  Arr : TArray<integer>;
begin
  SetLength(Arr, 2);
  Arr[0] := 5;
  Arr[1] := 3;

  TArray.Sort(Arr);

  ShowMessage(IntToStr(Arr[0]));
end;

При компиляции выдает ошибку E2250:

[Ошибка dcc32] Unit1.pas(39): E2250 Нет перегруженной версии Sort, которую можно было бы вызвать с этими аргументами


person Fabrizio    schedule 11.03.2020    source источник


Ответы (1)


При написании вопроса я нашел ответ... (это была тривиальная проблема с синтаксисом)

В классе TArray функция Sort определяется следующим образом:

class procedure Sort<T>(var Values: array of T); overload; static;

Таким образом, функции класса TArray необходимо вызывать, указывая тип после имени функции:

var
  Arr : TArray<integer>;
begin
  SetLength(Arr, 2);
  Arr[0] := 5;
  Arr[1] := 3;

  TArray.Sort<integer>(Arr);

  ShowMessage(IntToStr(Arr[0]));
end;
person Fabrizio    schedule 11.03.2020
comment
Достойный компилятор сможет вывести тип. Однако дженерики Delphi, мэм. - person David Heffernan; 11.03.2020