Это процедура редактирования матрицы.
После запуска процедуры на экране появляется сообщение и возможность ввода данных
Мне необходимо сделать так чтобы выполнение процедуры завершалось при нажатии на Esc
т.е происходило как бы отслеживание нажатия на ESC в процессе выполнения процедуры.
чтобы можно было либо ввести данные либо нажать на ESC и завершить ввод.
Иными словами по сценарию После ввывода на на экран сообщения, пользователь сразу вводит данные
но нужно чтобы он мог нажать на ESC чтобы заверить процедуру, а дальше уже по тексту.
procedure Edit;
var i,j,ior,c:integer;
y:char;
begin
writeln(#13,#10,#10'Для редактирования введите адрес ячейки i/j формат ввода i<пробел>j');
repeat
{$I-}read(i,y,j);{$I+}
ior:=IOResult;
if ior<>0 then Write(#13,#10,#10'Необходимо ввести числовое значение, повторите ввод - ')
until ior=0;
if (a[i,j]=1) then
a[i,j]:=0
else
a[i,j]:=1;
end;
Можешь вставить вот такой цикл:
Var
arrow: char;
Repeat arrow:=readkey;
...
Until arrow=#27; {esc}
procedure Edit;
var
i, j: integer;
ch: char;
err_i, err_j: integer;
s: string;
begin
writeln('enter i<space>j');
repeat
ch := readkey;
if ch = #27 then exit;
write(ch);
readln(s); s := ch + s;
val(copy(s, 1, pos(#32, s) - 1), i, err_i);
val(copy(s, pos(#32, s) + 1, 255), j, err_j);
if err_i + err_j > 0 then writeln('enter numbers');
until err_i + err_j = 0;
writeln('i = ', i);
writeln('j = ', j);
{ дальше делай с i, j все что хочешь... }
end.
Да, я вижу свою ошибку, volvo, но... если он уже начнёт делать ввод, то уже не сможет выйти нажатием ESC по твоему коду, или тебе это не надо Лёва???
Если стандартная процедура ввода по каким либо причинам не устраивает, стандартный метод решения - написать свою. В данном случае вводить текст в строку посимвольно. При нажатии на Esc - выходить из процедуры, а при нажатии на Enter - преобразовывать строку в число.