Возвращаемый тип HResult
Можно было
заметить, что метод QueryInterfасе() интерфейса IUnknown возвращает результат
типа HResult. Это наиболее общий
возвращаемый тип для многих
методов интерфейсов ActiveX и OLE, а также функций СОМ
API. HResult определяется в модуле
System как тип LongWord. Возможное значение
HResult описывается в модуле
Windows (если
используется VCL,
описания значений можно найти под
заголовком {HRESULT
value definitions }).
Значение HResult
S_OK или NOERROR (0) говорит об успешном
выполнении, если же установлен
старший бит значения HResult ? выполнение
некорректно. В модуле Windows имеются две функции
? Succeeded() и Failed(), которые принимают HResult в качестве параметра и
возвращают значение типа BOOL, указывающее,
соответствует ли переданное
значение корректному завершению
функции или ошибке. Синтаксис
вызова этого метода имеет вид:
if
Succeeded(FunctionThatReturnsHResult) then
═════//Продолжение, если все
нормально
if Failed(FunctionThatReturnsHResult) then
═════// Код обработки ошибки
Естественно,
проверка возвращаемого значения
каждой вызываемой функции ? скучное занятие. Кроме
того, работа с возвращаемыми
ошибками функций приводит к
неиспользованию системы
исключительных ситуаций Delphi. А потому в модуле ComObj определяется
процедура OleCheck(), с помощью которой
ошибки HResult преобразуются в
исключительные ситуации. Синтаксис вызова этого
метода имеет вид:
OleCheck(FunctionThatReturnsHResult);
Эта процедура
удобна в использовании, а
следовательно, ваш код упрощается.
|