![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() ![]() |
![]() |
Rishat |
![]()
Сообщение
#1
|
Гость ![]() |
Кто знает как можно ограничить пользователя при вводе данных - я имею ввиду есливводимое данное должно быть целочисленное -чтобы он ... не мог
там запятую или точку ввести - чтоб она у него не печаталась а токмо цифры от 0...9 и длинну скажем только 4 символа Я такую штуку наблюдал в калькуляторе винды - там буквы не печатаются Заранее спасибо Сообщение отредактировано: Rishat - 18.04.2004 15:15 |
Altair |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Цитата чтобы он *** не мог А ругаться зачем? Советую изменить сообщение, а то модератор увидит и ... ---- Ограничить можно, только надо вводить данные не с помощью Read а написать свою процедуру. ОБЩАЯ СХЕМА: 1 считать из буфера символ нажатой клавиши. 2 проверьть его ASCII код 3 в зависимости от того, правильно ли введены данные, отобразить на экран (эхо) 4 записать данные 5 перейти на 1. (в пункте 5 я написал перейти- это не значит использовать GOTO, это просто для наглядности. ) -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Dark |
![]()
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
могу дать на асме =)
-------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
Altair |
![]()
Сообщение
#4
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
А есть еще один способ (экзотический).
Пусть вводит юзер, что хочет, а программа должна иметь обработчик ошибок исполнения (Runtime Error). Если юзер ввел вместо 0 (ноль) О (буква О) , то произойдет ошибка, а обработчик ошибок вернет программу на точку ввода переменной. Подобный способ подробно описан в книге Turbo Pascal Фаронова. ---- Мне больше нравится этот способ, т.к. используя обработчик ошибок мы сразу предупреждаем все ошибки. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
APAL |
![]()
Сообщение
#5
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
И опять все пошли в дебри...
Господа, не надо усложнять - асм, буфер, обработчики... Хорошо елси Rishat имеет представление об этом, а если нет? Начинайте с самого простого и доступного - READKEY пусть "поюзает". P.S.: Oleg_Z: Цитата а то модератор увидит и ... :D (глаз за глаз) ![]() -------------------- |
Dark |
![]()
Сообщение
#6
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
Хм... =) ты прав
что то я совсем заассемблился ;) -------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
Atos |
![]()
Сообщение
#7
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Код uses crt; function reading:string;{Читает строку из четырёх цифр} var i:byte; ch:char; str:string[4]; begin clrscr; i:=0; str:=''; repeat ch:=readkey; if (ord(ch)>=48) and (ord(ch)<=58) then begin str:=str+ch; inc(i); write(ch); end; until (i=4); reading:=str; end; begin write(' vveli ',reading); readln; end. |
Altair |
![]()
Сообщение
#8
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
А мне вот, что в голову пришло:
более простой способ, чем юзанье readkey - это вводить все в строку! Ведь в строку можно ввести все, что угодно буз ошбки, а если надо перевестив число, то есть процедура val. По моему это самый простой метод! -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Rishat |
![]()
Сообщение
#9
|
Гость ![]() |
</span><span style='font-family:arial'>Большое Спасибо всем особливо Атосу и
Олегу -вот что я получил в результате Код program idea2; 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. Сообщение отредактировано: Rishat - 23.04.2004 16:02 |
Altair |
![]()
Сообщение
#10
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
пожалуйста возьмите в тег [ code] -только без пробула
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 14:56 |