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

Pascal:如何将数组传递给子程序?,pascal,procedure,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. 编译程序后,我得到一个错误: 致命:语法错误,预期为但;已找到(突出显

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

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.
编译程序后,我得到一个错误: 致命:语法错误,预期为但;已找到(突出显示函数名()


为什么这个程序不能工作?

您需要将参数正确地声明为一个开放数组。通过使用
Low
High
找到数组的边界

下面是一个(无用但有效)的示例:


为了补充Ken White的答案,在straight up(预打开数组)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.

这里已经回答了这个问题:开放数组依赖于方言。如果您使用Delphi或类似Lazarus的兼容工具,则术语是开放数组名(somearray:array of integer;…);为什么将函数的数组参数命名为与常量数组(
someArray
)相同?虽然可以理解范围,但它不必要地引入了一些混淆。
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.