繁体   English   中英

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

[英]Cannot construct dynamic array in dev-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,但它也不起作用。 是 dev-pascal 的问题还是没有更新之类的?

提前致谢。

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

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

这在现代世界无关紧要。 但我正在为那些想要故意使用过时的 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选项编译

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM