0

可以使用控制台类型的函数返回数组,但我正在尝试创建一个函数,它以整数 n 作为输入并返回一个以 Delphi 的 VCL 形式扩展的数组。我们怎么能做到这一点?

4

3 回答 3

3

在现代版本的 Delphi 中,您应该使用通用数组TArray<T>. 像这样:

function Foo(N: Integer): TArray<Extended>;
var
  i: Integer;
begin
  SetLength(Result, N);
  for i := 0 to N-1 do begin
    Result[i] := i;
  end;
end;

我要强调的是,使用Extended. 这是一种相当不寻常且性能很差的 10 字节浮点类型。该类型仅在有限数量的处理器上可用。几乎所有现实世界的浮点计算都是使用Single4Double字节和 8 字节 IEEE-754 浮点数据类型执行的。

于 2014-06-17T08:23:40.233 回答
2

如果我没记错的话,这必须通过重新输入来完成,即:

type
  TResultType: array of extended;

function DoSomthing(): TResultType
begin
  SetLength(Result, 2);
  Result[0] := 1.2;
  Result[1] := 3.4;
end;
于 2014-06-16T14:47:59.660 回答
0

这不是 VCL/Console 问题,因为函数声明不依赖于您正在编写的应用程序的类型。

Delphi(或任何 Pascal)函数可以返回任何命名数据类型。只要在类型部分声明了数组类型,函数就可以处理它。

例如。

type
  ExtArray : array of extended;

function IntToArray(i:integer):ExtArray;
begin
  ...
end;
于 2014-06-16T14:51:00.447 回答