如何从Delphi函数返回数组?

时间:2011-05-26 22:40:27

标签: arrays delphi

我的应用程序中有一个需要返回数组的函数。我在几个地方发现了如何通过声明数组类型来实现这一点,例如

type
  TStringArray = array of string; 

然后宣布我的功能

function SomeFunction(SomeParam: Integer): TStringArray;

我的问题是尝试以具有接口和实现的形式设置它。如何在界面中声明我的类型并具有该类型的函数声明?

2 个答案:

答案 0 :(得分:33)

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单位是不可见的。其他单位需要关心单位的界面,本单位和外部单位签署的“合同”,而不是实施部分中的“实施细节”。

答案 1 :(得分:13)

如果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.