Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
ВнизОбработка исключений. Найти похожие ветки
← →
Андрей. (2002-05-11 00:58) [0]Возможно у кого–то есть решение следующей проблемы. Мне нужно скрыть возникающие исключения. К примеру есть следующий код конвертирующий произвольное Variant значение в другое Variant значение требуемого типа:
function ConvertValue(var Dest: Variant; const Source: Variant; VarType: TVarType): Boolean;
begin
try
result := true;
Dest := VarAsType(Source,VarType);
except
Dest := null;
result := false;
end;
end;
Естественно в некоторых ситуация будет возникать исключение EVariantError при конвертации значений, которое будет ловиться в блоке except .. end. Например в следующей ситуации:
Var
V1: Variant;
..
If ConvertValue(V1,’wertqy’,varInteger) then ..
Но есть один недостаток. Данный код находится в некотором компоненте и данное исключение успешно (полностью) скрывается в двух из трех ситуаций.
1. В Design-Time . То есть когда некий программист использует компонент с данным кодом и меняет, скажем какие-то свойства через Object Inspector.
2. В работающем автономно (не из под Delphi) приложении.
В ситуации когда приложение запускается из под Delphi (например по F9), при любой некорректной конвертации сначала появляется окно с сообщением, что то типа: "Project raised exception class EvariantError with message .... Process Stopped. Use Step or Run to continue." Приходится нажимать на кнопку Ok чтобы продолжить выполнение программы. Далее управление переходит в блок except.. end, где успешно обрабатывается. Так вот нужно чтобы ни при каких обстоятельствах не появлялись окна с сообщениями. Как это можно сделать ?
Заранее всем спасибо.
P.S.
Настройки через меню Delphi (например в Tools\Debugger Options..) не подходят, так как компонент будет использоваться сторонними программистами (а как у них настроена обработка исключений неизвестно).
← →
Song (2002-05-11 09:56) [1]Вроде бы директива есть, которая дублирует установочку в меню. См. файл имя_проекта.dof
← →
Андрей. (2002-05-11 11:29) [2]Искал. Или не нашел или не помогло.
← →
Cobalt (2002-05-11 14:46) [3]попробуйте посмотреть в хелпе по Дельфям, ключевое слово - директивы
← →
Cobalt (2002-05-11 14:50) [4]и еще к.л. - {$
← →
Андрей. (2002-05-14 10:34) [5]Протестировал перебором все директивы компилятора по списку из Help"a в состоянии (ON/OFF). Ни одна не помогла. Может есть еще какие-нибудь способы?
← →
Игорь Шевченко (2002-05-14 10:47) [6]День добрый,
Если нужно, чтобы исключение не возбуждалось ни при каких условиях, то самый гуманный способ - это выполнять проверку на корректность до преобразования. Это займет гораздо меньше времени, чем поиск отключения Exceptions. Кстати, значение гайки Language Exceptions находится в реестре HKCU/Software/Borland/Delphi X.0/Debugging/Language Exceptions.
Директив компилятора, разумеется нет. :-)
С уважением,
← →
wicked (2002-05-14 10:48) [7]а в чём проблема то?... или ты и заказчика будешь заставлять свою програмку из-под delphi запускать?...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c