尽管读取,Pascal仍会立即编译并关闭;

时间:2012-12-10 16:22:08

标签: pascal readline

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.

我有这段简单的代码,可以让我把东西分配给2d数组的XY坐标。尽管有读取,代码仍可直接编译和关闭;在底部。 所有最好的雅兰。

1 个答案:

答案 0 :(得分:2)

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