Pascal 帕斯卡编译并立即关闭,尽管有readln;

Pascal 帕斯卡编译并立即关闭,尽管有readln;,pascal,readline,Pascal,Readline,我有一段简单的代码,它允许我将东西分配给2d数组的XY坐标。尽管有readln,代码还是会立即编译并关闭;在底部。 所有最好的Arran。在开发过程中始终启用范围检查{$R+}。您有一个基于1的数组,但第一次从中读取时x和y值为零。在调试器中单步执行该数组时会发生什么情况?(另外,您将问题标记为“语法错误”。如果编译并运行,则不会出现语法错误。) program words; uses crt; type T2DArray = array[1..100, 1..100] of strin

我有一段简单的代码,它允许我将东西分配给2d数组的XY坐标。尽管有readln,代码还是会立即编译并关闭;在底部。
所有最好的Arran。

在开发过程中始终启用范围检查{$R+}。您有一个基于1的数组,但第一次从中读取时x和y值为零。

在调试器中单步执行该数组时会发生什么情况?(另外,您将问题标记为“语法错误”。如果编译并运行,则不会出现语法错误。)
program words;
uses crt;
type
    T2DArray = array[1..100, 1..100] of string;
var
    ch:char;
    x,y:integer;
    MapArray: T2DArray;
begin
    x:=0;
    y:=0;
    repeat
            MapArray[10, 10] := 'you are at a tree';
            writeln(MapArray[x,y]);
            write('current positon is ');
            write(x);write(',');write(y);
            ch:=ReadKey;
            case ch of
            #0 : begin
                    ch:=ReadKey; {Read ScanCode}
                    case ch of
                    'w'  :  y:=y+1;
                    'a'  :  x:=x-1;
                    's'  :  y:=y-1;
                    'd'  :  x:=x+1;
                    end;
            end;
            #27 : WriteLn('ESC');
            end;
    until ch=#27;
    readln;
end.