Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Для новичков > обработка ошибок |
Автор: chiffa 17.7.2007, 17:36 | ||
Такой вопрос. как на Делфи сделать "отталкивание от ошибок". К примену на PHP
тоесть если переменная/выражение не существует, а точнее возвращает ошибку нужно остановить цикл. как это можно реализовать на Делфи? |
Автор: Alexeis 17.7.2007, 17:44 | ||
Если память под переменную не выделена то так
А так переменные не умеют возвращать ошибки. |
Автор: MetalFan 17.7.2007, 18:04 |
точнее если указатель = nil... а выделена или нет память по некоему указателю - так не проверишь ;) теоретически валидность указателя можно проверить с помощью набора функций: IsBadCodePtr; IsBadHugeReadPtr; IsBadHugeWritePtr; IsBadReadPtr; IsBadStringPtr; IsBadStringPtrA; IsBadStringPtrW; |
Автор: chiffa 18.7.2007, 15:24 | ||
Пытаюсь так:
Выдает: [Pascal Error] Unit2.pas(78): E2008 Incompatible types |
Автор: Lunatikus 18.7.2007, 16:10 |
Разве свойство Activate не может иметь только true или false?Тогда конечно будет ругаться что ты его сравниваешь с непонятным ему nil. |
Автор: lukas 18.7.2007, 16:18 | ||
это дельфи а не php, нужно заботится о типах... (ошибка: несовместимость типов)
А nil - это формальный ноль указателя... |
Автор: chiffa 18.7.2007, 16:33 | ||
спасибо! но код
все три раза выбрасывает табличку с номером, хотя страницы существуют |
Автор: chiffa 20.7.2007, 09:50 | ||||
пасиба. Столкнулся еще с одним траблом.... если в ячейки C9 битая формула, Делфи выбрасывает ошибку и останавливает выполнение. Пытаюсь сделать что бы при ошибке вывело сообщение и продолжило выполнять программу дальше... может кто подскажет как это можно реализовать?....
Добавлено через 3 минуты и 26 секунд
выводит ошибку: Неверный индекс и все.... |
Автор: Alexeis 20.7.2007, 10:53 | ||
Нужно пользоваться конструкцией
т.е. создать защищенный блок, который позволяет обрабатывать исключения. |
Автор: sentry 20.7.2007, 13:28 |
Если в Tools->Debugger Options изменить соответствующие опции (например, Stop On Delphi Exceptions), то программа не будет останавливаться. Но если потребуется узнать тип произошедшего исключения, то нужно будет все вернуть обратно. |
Автор: chiffa 23.7.2007, 09:17 | ||
Сделал так:
теперь программа продолжает работу, но системную ошибку о несовместимости типов продолжает выдавать.... |
Автор: Alexeis 23.7.2007, 09:35 |
chiffa, может z - это не целое число? |
Автор: MetalFan 24.7.2007, 08:18 | ||||
|