Кто знает как можно ограничить пользователя при вводе данных - я имею ввиду есливводимое данное должно быть целочисленное -чтобы он ... не мог
там запятую или точку ввести - чтоб она у него не печаталась а токмо
цифры от 0...9 и длинну скажем только 4 символа
Я такую штуку наблюдал в калькуляторе винды - там буквы не печатаются
Заранее спасибо
могу дать на асме =)
А есть еще один способ (экзотический).
Пусть вводит юзер, что хочет, а программа должна иметь обработчик ошибок исполнения (Runtime Error). Если юзер ввел вместо 0 (ноль) О (буква О) , то
произойдет ошибка, а обработчик ошибок вернет программу на точку ввода переменной. Подобный способ подробно описан в книге Turbo Pascal Фаронова.
----
Мне больше нравится этот способ, т.к. используя обработчик ошибок мы сразу предупреждаем все ошибки.
И опять все пошли в дебри...
Господа, не надо усложнять - асм, буфер, обработчики...
Хорошо елси Rishat имеет представление об этом, а если нет?
Начинайте с самого простого и доступного - READKEY пусть "поюзает".
P.S.: Oleg_Z:
Хм... =) ты прав
что то я совсем заассемблился ;)
А мне вот, что в голову пришло:
более простой способ, чем юзанье readkey - это вводить все в строку!
Ведь в строку можно ввести все, что угодно буз ошбки,
а если надо перевестив число, то есть процедура val.
По моему это самый простой метод!
</span><span style='font-family:arial'>Большое Спасибо всем особливо Атосу и
Олегу -вот что я получил в результате
uses crt;
var
a,b:integer;
r:integer;
function reading(var r:integer):string;
var i:byte;
ch:char;
str:string[4];
begin
i:=0;
str:='';
repeat
ch:=readkey;
if (ord(ch)>=45) and (ord(ch)<=58) then
begin
str:=str+ch;
i:=length(str);
write(ch);
end;
until (i=4);
writeln;
val(str,r,b);
end;
begin
clrscr;
write(' vvedi chislo');
reading(r);
writeln;
writeln('vi vveli',r);
readln;
end.
пожалуйста возьмите в тег [ code] -только без пробула