|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.01.2010, 17:16 | #1 |
Пользователь
Регистрация: 05.12.2009
Сообщений: 52
|
Взятие обработки ошибок в свои руки (Паскаль).
Возможно ли обработка ошибок времени выполнения с помощью каких либо операторов? Хочу вот сделать чтобы программа адекватно реагировала на ошибки, а не вылетала, к примеру когда пользователя отчётливо просят ввести числовое значение, а он шлёпает буквы .
Нашёл вот в модуле Dos переменную DosError возвращающюю код ошибки Dos, но как пользоваться ей ума не приложу. Может как-то так ? Код:
Или может ошибки нельзя обрабатывать, а возможно только предотвращать? Обьясните, пожалуйста, эти вещи на языке начинающего |
14.01.2010, 23:40 | #2 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Если вы запускаете из своей программы какую-нибудь другую по средством процедуры Exec('программа','параметры'), то затем можно посмотреть правильно ли отработала запущенная вами программа или вылетела (Если в переменной DosExitCode ноль, то всё произошло по плану, если нет, то была ошибка). Кстати, коды ошибок в разных операционных системах могут отличаться (проверено опытом).
DosError содержит код ошибки (0 если не было ошибки) после "несерьёзной" операций с файлами. Например, посмотрели аттрибуты несуществующего файла. Открытие несуществующего файла вызывает уже серьёзную ошибку, поэтому надо использовать переменную IOResult, предварительно установив диррективу компилятора {$I-}. Вобщем почитайте про директивы компилятора, они позволяют перехватывать ошибки в ран-тайме, но будьте осторожны - они не всегда дают понять была ли ошибка или нет. |
14.01.2010, 23:55 | #3 | |
Пользователь
Регистрация: 05.12.2009
Сообщений: 52
|
Цитата:
P. S. Cпасибо, а я как-то и забыл про директивы компилятора. Т. е. когда я отключаю какую-либо директиву компилятор перестаёт наблюдать за ошибками времени выполнения и я сам могу это сделать? |
|
15.01.2010, 00:43 | #4 | |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Нет, только к запуску внешнего файла.
Цитата:
Зачем вам именно Pascal, можно сделать консольное приложение в Delphi, ведь время DOS'a уже ушло P.S В реальном времени компилятора уже и не будет. |
|
15.01.2010, 09:22 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
насколько я помню, единственный способ в TurboPascal как то обрабатывать ошибки - это отключать соотвествующие проверки через директивы компилятора (например, ошибки работы с файлами {$I-} {$I+} и обрбатывать ситуацию самостоятельно).
Но, похоже, в Вашем случае всё гораздо проще. Посмотрите вот здесь: Можно ли заставить программу не вылетать с ошибкой, если пользователь вместо целого числа введет, скажем, букву... |
15.01.2010, 12:17 | #6 | |
Пользователь
Регистрация: 05.12.2009
Сообщений: 52
|
Цитата:
P. S. Извините за оффтоп но скажу: в том то и дело что ДОС уже давно стоит на месте, поэтому для обучения ПРИНЦИПАМ программирования лучше Паскаля не найти (ИМХО). А Windows постоянно движется вперёд (скачет). И потом для меня создание программ именно на Паскале принципиально)). Один человек лопнул со смеху когда я спросил его можно ли делать 3D игры на нём. Между тем даже в некоторых учебниках есть темы программированию трёхмерной графики на этом языке. Мне почему-то кажется, что у Паскаля есть гораздо больше возможностей, чем думает большинство людей. P. S. Блин теперь точно штрафанут. |
|
15.01.2010, 12:35 | #7 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
1) Всегда и повсюду ставьте защиту от дурака - запрет на ввод букв вместо цифр (проверяйте, проверяйте и еще раз проверяйте, что ввел юзверь).
2) В "критических" местах типа где открываем файл - СНАЧАЛА ПРОВЕРИЛИ ЕГО СУЩЕСТВОВАНИЕ. А то дал я товарищу по работе программу протестировать, которая создавала файл на секунду, потом из него читала и удаляла. Так он умудрился вызвать ERROR успев удалить файл. 3) Используем TRY.. EXCEPT для отлова ошибок.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Взятие интеграла | max38934 | Общие вопросы Delphi | 2 | 11.05.2009 16:03 |
программа обработки ведомости на зарплату на Паскаль | Анжелика | Помощь студентам | 6 | 16.12.2008 16:55 |
как получить чужой комп в свои руки | zetrix | Безопасность, Шифрование | 7 | 13.11.2008 16:32 |
Паскаль. Структуры и алгоритмы обработки данных | Римма | Паскаль, Turbo Pascal, PascalABC.NET | 15 | 08.10.2007 14:58 |