我制作了一个程序,其中有一个带有数组的过程作为其中一个参数
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预期但;找到(函数名称()突出显示)
为什么这个程序不起作用?
答案 0 :(得分:4)
您需要正确地声明参数,作为一个开放数组。您可以使用Low
和High
找到数组的边界。
这是一个(无用但有效)的例子:
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.