无法在dev-pascal中构造动态数组

时间:2016-12-22 02:58:26

标签: pascal

我还是初学者,所以请原谅我,如果这是一个愚蠢的错误或其他什么。 我想编写一个程序来生成从2到n的素数,而n是用户定义的。由于我在程序开始时不知道n,因此我想构建一个动态数组和setlength(n)。以下是我的代码片段:

    program D401;
    type
       arr = array of int64;
    var
       x : int64;
       a : arr;
    begin
        readln(x);
        setlength(a, x);
    end.

但它不会起作用而且它说: 致命:语法错误,[预期但发现

我也试过这个:

    program D401;
    var
       x : int64;
       a : array of int64;
    begin
        readln(x);
        setlength(a, x);
    end.

但它也会产生同样的错误。我也使用了freepascal和GNU pascal,但它也没有用。它是开发者的问题还是没有更新或什么?

提前致谢。

2 个答案:

答案 0 :(得分:1)

Dev Pascal很古老,并且使用不支持动态数组语法的旧编译器。简单地说,你今天不应该使用它。

如果你想要一个使用最新Pascal编译器的免费开发环境,最好的选择是Lazarus,使用现代版本的freepascal。

答案 1 :(得分:0)

这在现代世界无关紧要。但我正在为那些想要故意使用过时的 GNU Pascal 的人写我的答案。我对 GNU Pascal 略知一二,但建议采用基于指针的方法:

program dynarr;

type
  TElem = integer;
  TPArray = ^TElem;

var
  pArray: TPArray;
  length, i: INTEGER;

begin
  length := 10;
  GetMem(pArray, length * sizeof(TElem));

  for i := 0 to length-1 do
    (pArray+i)^:=i;
  for i := 0 to length-1 do
    writeln((pArray+i)^);

  FreeMem (pArray, length * sizeof(TElem));
  readln;
end.

使用 --pointer-arithmetic 选项编译