Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.23;
Скачать: CL | DM;

Вниз

Обработка исключений.   Найти похожие ветки 

 
Андрей.   (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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
1-73100
ДЖИН
2002-05-12 18:19
2002.05.23
Как записать изображение в буфер???


4-73467
AFROLOV
2002-03-25 11:28
2002.05.23
Как не пропускать сообщение к чужому приложению


1-73172
CybVe
2002-05-13 16:53
2002.05.23
Что такое TFrame и зачем он нужен?


4-73437
fomstas
2002-03-21 13:20
2002.05.23
Как правильно преобразовать Canvas в Icon не сохраняя в файл...


1-73132
Konsul
2002-05-13 15:38
2002.05.23
Вопрос о свойствах формы