Pascal:如何将数组传递给子程序?

时间:2015-12-02 10:35:12

标签: pascal procedure

我制作了一个程序,其中有一个带有数组的过程作为其中一个参数

program something ;

const someArray: array[1..4] of integer = (1, 2, 3, 4);

procedure name(someArray: array; a, n: integer);
    begin
    ....
    end;

begin
name(someArray, x, y)
end.

编译程序后,我收到一个错误:  致命:语法错误,OF预期但;找到(函数名称()突出显示)

为什么这个程序不起作用?

2 个答案:

答案 0 :(得分:4)

您需要正确地声明参数,作为一个开放数组。您可以使用LowHigh找到数组的边界。

这是一个(无用但有效)的例子:

program Sample;
Var x,y: Integer;

const
  SomeArray: array[1..4] of Integer = (1, 2, 3, 4);

procedure Name(const AnArray: Array of Integer; const A, B: Integer);
var
  OutOne, OutTwo, i: Integer;
begin
  for i := Low(AnArray) to High(AnArray) do
  begin
    OutOne := AnArray[i] * A;
    OutTwo := AnArray[i] * B;
    WriteLn('One: ', OutOne, ' Two: ', OutTwo);
  end;
end;

begin
  //x and y have to be initialised before use
  Name(SomeArray, x, y);
  ReadLn;
end.

答案 1 :(得分:0)

为了补充Ken White的答案,在直接(预打开数组)Pascal中,array在参数定义中自己不受支持。

相反,您需要声明一个特定的数组类型来执行您在此处尝试执行的操作。

这可能是这样的:

program something ;

type
  TMyArray = array[1..4] of integer;

const someArray: TMyArray = (1, 2, 3, 4);

procedure name(someArray: TMyArray; a, n: integer);
    begin
    ....
    end;

begin
name(someArray, x, y)
end.