Подтвердить что ты не робот

Как вернуть массив из функции Delphi?

У меня есть функция в моем приложении, которая должна возвращать массив. Я нашел в нескольких местах, как это сделать, объявив тип массива, например.

type
  TStringArray = array of string; 

И затем объявив мою функцию

function SomeFunction(SomeParam: Integer): TStringArray;

Моя проблема заключается в том, чтобы установить это в форме, которая имеет как интерфейс, так и реализацию. Как объявить мой тип и объявить функцию с этим типом в интерфейсе?

4b9b3361

Ответ 1

unit Unit1;

interface

uses SysUtils;

type
  TStringArray = array of string;

function SomeFunction(SomeParam: integer): TStringArray;

...

implementation

function SomeFunction(SomeParam: integer): TStringArray;
begin
  SetLength(result, 3);
  result[0] := 'Alpha';
  result[1] := 'Beta';
  result[2] := 'Gamma';
end;

...

end.

Золотое правило заключается в том, что раздел интерфейса устройства описывает типы данных, используемые устройством, а также типы, классы и функции (их подписи), которые находятся в модуле. Это то, что видят все остальные единицы. Раздел реализации содержит реализацию классов и функций. Это не видно единицам ohter. Другие устройства должны заботиться о интерфейсе устройства, "контракте", подписанном данным устройством, и внешнем блоке, а не "деталях реализации", найденных в разделе реализации.

Ответ 2

Если вы Delphi довольно недавно, вам не нужно объявлять новый тип, объявив его как TArray<String>.

Пример скопирован и вставлен из приведенного выше ответа:

unit Unit1;

interface

function SomeFunction(SomeParam: integer): TArray<String>;

implementation

function SomeFunction(SomeParam: integer): TArray<String>;
begin
  SetLength(result, 3);
  result[0] := 'Alpha';
  result[1] := 'Beta';
  result[2] := 'Gamma';
end;

end.