Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
1-73195
Destroyer
2002-05-13 14:51
2002.05.23
Проблема с размером файла более 64К


4-73461
medan
2002-03-18 12:06
2002.05.23
закрытие всех окон без вопросов


1-73317
Mikeee
2002-05-12 13:17
2002.05.23
Как убрать строку из ListBox-a...


6-73342
eviL
2002-03-12 10:47
2002.05.23
Sokets


4-73465
vitall
2002-03-25 13:21
2002.05.23
Подскажите, где ошибка? Вроде все правильно, но не работает...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский