А вот, если что, процедура, которая осуществляет ввод значения (от -999999999 до 999999999) в глобальную переменную, и не дает пользователю даже ввести некорректные данные. Требует модуль Crt (используется функция ReadKey).
Код
Program Vvod;
Uses
Crt;
Var
a: LongInt;
Procedure GetNumber(var a: LongInt);
var
s: String;
ch: Char;
error: Integer;
begin
s:='';
repeat
ch:=ReadKey;
case ord(ch) of
45: if s = ''
then begin
s:='-';
Write('-')
end;
48..57: if (length(s) - Pos('-',s) < 9)
then begin
s:=s+ch;
Write(ch)
end;
8: begin
GotoXY(WhereX-1,WhereY);
Write(' ');
GotoXY(WhereX-1,WhereY);
Delete(s,length(s),1)
end
end {case}
until (ch = #13);
Val(s,a,error)
end;
{****************************************************************************}
Begin
ClrScr;
GetNumber(a);
WriteLn;
WriteLn('Vvedeno chislo: ', a);
ReadLn
End.