Как вернуть массив из функции Delphi?
У меня есть функция в моем приложении, которая должна возвращать массив. Я нашел в нескольких местах, как это сделать, объявив тип массива, например.
type
TStringArray = array of string;
И затем объявив мою функцию
function SomeFunction(SomeParam: Integer): TStringArray;
Моя проблема заключается в том, чтобы установить это в форме, которая имеет как интерфейс, так и реализацию. Как объявить мой тип и объявить функцию с этим типом в интерфейсе?
Ответы
Ответ 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.