Операция с недопустимым вариантом при сравнении OleVariant с UnAssigned

Это мой код:

**if** FWordApp = UnAssigned **then**
    FWordApp := CreateOleObject('Word.Application') ;
Result := FWordApp;

Выше приведено в GETter для свойства типа OleVariant.

В первый раз все проходит нормально, сравнивается TRUE с Unassigned. Однако то же самое не так во второй раз, когда сравнение с UnAssigned выдает ошибку Invalid Variant Operation.

1 ответ

Решение

Как говорится в сообщении об ошибке, вы не можете сравнивать Unassigned против COM-объекта в контексте OleVariant, Это незаконное сравнение.

Ваш тест должен использовать вместо VarIsEmpty:

if VarIsEmpty(FWordApp) then
  FWordApp := CreateOleObject('Word.Application');
Другие вопросы по тегам