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

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

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

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

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

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

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
engeneer, Вы зря не хотите послушать то, что Вам говорят умные и, главное, опытные люди!
Поймите, защитить от ввода неверного значения на этапе readln(r); (если r : real / double / extended/ integer ...) НЕЛЬЗЯ!!!
Потому как дурак туда легко может написать вместо числа просто "Ку-ку" - и вы опять получите ошибку. Причём ошибку выдаст именно Паскаль! Единственный, гарантированный, удобный, мощный способ проверки - это вводить строку и потом её анализировать/конвертировать/проверять и т.д. и т.п.
Более того, можно будет сказать:- Уважаемый пользователь, введённая Вами строка: Ку-Ку не является допустимым числовым значением! Введите число от ... до ....)
Всё сказанное прошу расценивать как моё личное мнение (IMHO). Удачи!
Никто не сомневался в Вашей лично компетентности, а также компетентности всех здесь присутствующих. Однако, защиту на этапе ввода сделать МОЖНО!. Я сделал вот так:

Код:
var
 r:real;
begin
{$I-}
 readln(r);
{$I+}
 if IOResult<> then writeln('ошибка ввода !');
end.
Можете проверить - все работает. Прога не останавливается, а в случае ввода "ку-ку" выдает "ошибка ввода!".
Однако эта защита не работает при переполнении значения типа real (прога останавливается с сообщением об ошибке), а тип extended мне, к сожалению, не подходит. Так вопрос в том, можно ли сделать защиту от переполнения с помощью какого-то друго ключа (не {$I-} и {$I+}) и существует ли этот ключ вообще?

Последний раз редактировалось engeneer; 23.07.2008 в 17:50.
engeneer вне форума Ответить с цитированием
Старый 23.07.2008, 19:45   #22
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

попробуйте в свой код ввести выражение: 3 Ку-ку
С точки зрения программы всё отлично ;-)
Ладно.
Не хотите использовать string - Ваше право. В конце концов - может есть нюансы, о которых мы не знаем...
Желаю Вам удачи в поисках нужного ключика...
p.s. hint: в среде TurboPascal нажмите Ctrl-O O
в начале вставятся все существующие ключи компиляции.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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