函数返回VCL表单Delphi中的扩展数组

时间:2014-06-16 14:19:55

标签: delphi delphi-xe6

使用Console类型中的函数返回数组可以完成,但我试图创建一个函数,它接受一个整数n作为输入,并返回一个扩展的数组,以VCL形式的Delphi。我们怎么能这样做?

3 个答案:

答案 0 :(得分: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字节浮点类型。该类型仅适用于有限数量的处理器。几乎所有现实世界的浮点计算都是使用SingleDouble,4字节和8字节IEEE-754浮点数据类型执行的。

答案 1 :(得分:2)

如果我的记忆对我有用,则必须通过重新输入来完成,即:

type
  TResultType: array of extended;

function DoSomthing(): TResultType
begin
  SetLength(Result, 2);
  Result[0] := 1.2;
  Result[1] := 3.4;
end;

答案 2 :(得分:0)

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

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

例如

type
  ExtArray : array of extended;

function IntToArray(i:integer):ExtArray;
begin
  ...
end;