Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 146
от 28.03.2006, 17:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 162, Экспертов: 47
В номере:Вопросов: 1, Ответов: 1


Вопрос № 38324: Добрый день эксперты. Очень нужна ваша помощь. Такая ситуация: есит переменная perem типа integer. Если я вважу например 12bn или hn то происходит ошибка выполнения. Как в паскале выловить такую ошибку и попросить ввод еще раз? Спасибо за ответ!...

Вопрос № 38.324
Добрый день эксперты. Очень нужна ваша помощь. Такая ситуация: есит переменная perem типа integer. Если я вважу например 12bn или hn то происходит ошибка выполнения. Как в паскале выловить такую ошибку и попросить ввод еще раз? Спасибо за ответ!
Отправлен: 23.03.2006, 15:39
Вопрос задал: OlegMA (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, OlegMA!
Вызывает легкое недоумение Ваше упорное желание присвоить целочисленной переменной строковый тип данных. :) Я думаю более правильно Ваш вопрос должен звучать так: Как контролировать тип вводимых пользователем данных, чтобы прога не откинула ножки при введении неправильного типа. Если я ошибся - уточните.
1. Можно контролировать эту операцию сочетанием ключа компилятора {$I} и полчением кода ошибки с помощью функции IOResult.
Var
i: integer;
Begin
{$I-} {Отключаем контроль ввода}
ReadLn(i); {Вводим данные}
{$I+} {Включаем обратно}
If IOResult<>0 Then {Теперь, если введенные данные будут не целого типа IOResult будет отличатся от нуля}
WriteLn('Неправильный тип данных. Повторите ввод.'); {Выводим сообщение об ошибке}
End.
2. Другой способ - вводить любые данные в виде строки. Это более универсальное решение, т.к. строку, если она своими символами соответствует какому-то типу, можно преобразовать в любой тип.
Var
s: string;
i, err: integer;
Begin
ReadLn(s); {Вводим данные}
Val(s, i, err); {Преобразуем строку в целое число}
If err<>0 Then {Если в строке было что-то еще, кроме числовых символов, то в err будет позиция символа имеющего недопустимое для преобразования значение}
WriteLn('Неправильный тип данных. Повторите ввод.'); {Выводим сообщение об ошибке}
End.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 23.03.2006, 18:23


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.20 (beta) от 17.03.2006
Яндекс Rambler's Top100

В избранное