Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2008, 13:02   #1
engeneer
Пользователь
 
Регистрация: 17.07.2008
Сообщений: 27
По умолчанию отключение проверки при вводе

Всем добрый день.

Хотел спросить: можно как-то наглухо отключить проверку ввода-вывода, чтобы не было абсолютно никаких сообщений об ошибках ввода? Хотелось бы сделать нормальную "защиту от дурака" в проге.
Пробовал с помощью ключей {$I-} и {$I+}:


Код:
var
 r:real;
begin
{$I-}
 readln(r);
{$I+}
 writeln(IOResult);
end.
Однако при вводе, например, значения 1Е+39 () все-таки выдается сообщение о переполнении плавающей точки и прога останавливается. Хотелось бы все отключить наглухо и проводить проверку чем-то типа IOResult. Подскажите пожалуйста, если кто знает. Спасибо.
engeneer вне форума Ответить с цитированием
Старый 22.07.2008, 14:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

{$Q-} вуключит проверку на переполнение
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.07.2008, 14:49   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
{$Q-} вуключит проверку на переполнение
Хм... Этот способ не работает
Можно просто перегонять из строки в число
Код:
var
  s:string;
  r: real;
  q: integer;
begin
  readln(s); //вводим число (как строку)
  val(s, r, q); //перегоняем в число
  if q<>0 then //ваши действия или бездействия при ошибке (q - код ошибки)
  readln;
end.
eoln вне форума Ответить с цитированием
Старый 22.07.2008, 15:49   #4
engeneer
Пользователь
 
Регистрация: 17.07.2008
Сообщений: 27
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Хм... Этот способ не работает
Можно просто перегонять из строки в число
Код:
var
  s:string;
  r: real;
  q: integer;
begin
  readln(s); //вводим число (как строку)
  val(s, r, q); //перегоняем в число
  if q<>0 then //ваши действия или бездействия при ошибке (q - код ошибки)
  readln;
end.

Строки считывать не хотелось бы... Предполагается, что в итоге-то прога из файла будет читать и если читать строки - появляются доплнительные заморочки, еще хуже этой.
engeneer вне форума Ответить с цитированием
Старый 22.07.2008, 16:11   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты можеш четко и раскрыто задачу изложить.
Решений твоей проблемы - уйма, но что ты хочеш непонятно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.07.2008, 16:26   #6
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Согласен с решением engeneer.
То что ты выключишь сообщение об ошибке, тебя не избавит от нее. Подумай, как ты дальше неверные данные обрабатывать будешь?
Или
Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты можеш четко и раскрыто задачу изложить.
Решений твоей проблемы - уйма, но что ты хочеш непонятно.
+1
Hollander вне форума Ответить с цитированием
Старый 22.07.2008, 18:32   #7
engeneer
Пользователь
 
Регистрация: 17.07.2008
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Hollander Посмотреть сообщение
Подумай, как ты дальше неверные данные обрабатывать будешь?
Или

+1
Да никак не буду! В случае ошибки ввода прога выплевывает что-то типа "произошла ошибка ввода. для выхода нажмите любую клавишу" и выходит. Или второй вариант - возвращается к вводу переменной.
engeneer вне форума Ответить с цитированием
Старый 22.07.2008, 19:03   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
В случае ошибки ввода прога выплевывает что-то типа "произошла ошибка ввода. для выхода нажмите любую клавишу" и выходит. Или второй вариант - возвращается к вводу переменной.
Если так, то это же совсем просто. Школьников все время тренируют на проверку правильности ввода. В таком случае определяется что можно вводить, а что нельзя и потом или в цикле repeat . . until, или через goto проверяется правильность ввода, при неправильном выдается сообщение и ввод повторяется, пока не будет введено допустимое значение.
puporev вне форума Ответить с цитированием
Старый 23.07.2008, 09:16   #9
engeneer
Пользователь
 
Регистрация: 17.07.2008
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты можеш четко и раскрыто задачу изложить.
Решений твоей проблемы - уйма, но что ты хочеш непонятно.
Если я скажу, что от переменной r вычисляется интеграл Френеля, - полегчает? Кроме того, к исполнению мат. части проги у меня претензий нет... Нужна лишь "защита от дурака" при вводе переменной r.
engeneer вне форума Ответить с цитированием
Старый 23.07.2008, 09:20   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Совсем за дураков-то нас не считай, тоже где-то учились и что-то читали. Определи в каких пределах может изменяться r и сделай как я написал.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировка при вводе данных через php-myadmin и sql запросы serg-php PHP 4 27.09.2009 17:03
Написать програму проверки знания даты второй мировой войны. TurboPaskal Паскаль, Turbo Pascal, PascalABC.NET 22 24.04.2008 19:10
Система проверки на человека Andrey1433 PHP 2 11.03.2008 14:13
преобразование массивов при вводе данных greenkat Microsoft Office Excel 4 28.02.2008 19:21
Проблемка при вводе чисел at10 Microsoft Office Excel 4 02.12.2007 22:22