Главная страница
    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.006 c
1-73289
Александр Арсентьев
2002-05-11 14:41
2002.05.23
Методы оценки стоимости программного


7-73414
Koks
2002-02-26 15:31
2002.05.23
КАК поставить файлу свое время...


14-73360
VID
2002-04-13 20:25
2002.05.23
Что то EXE не запускаются ...


3-73012
SONY
2002-04-26 06:59
2002.05.23
Ошибка


6-73325
Devid
2002-03-11 18:05
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский