На этом шаге мы рассмотрим, как преобразуется этот вызов на сервере.
Если мы реализовали метод СОМ-сервера как процедуру, поддерживающую соглашение о вызовах safecall, Delphi скомпилирует его в функцию, возвращающую значение типа HRESULT и поддерживающую соглашение о вызовах stdcall. Если метод был функцией, то возвращаемое значение преобразуется в еще один параметр этого метода. Сама функция будет реализована в виде следующего псевдокода:
try <тело функции> Result := S_OK except // Подготовка информации для IErrorInfo Result := <код ошибки> end;
Благодаря этому можно свободно генерировать исключения в коде функции, и они будут преобразованы в ошибки СОМ.
На следующем шаге мы рассмотрим тестовую программу.