Устранение ошибки OLE-Автоматизации при открытии Word 2010 из Delphi XE7
Пользователь столкнулся с проблемой при попытке открыть документ Word 2010 через OLE-Автоматизацию в среде разработки Delphi XE7. В процессе работы с функцией Open() из модуля Word2010.pas, который предоставляется с Delphi XE7, возникла ошибка EVariantBadVarTypeError с сообщением "Invalid variant type". Это указывает на то, что один из параметров, переданных функции, имеет некорректный тип.
Описание ошибки
Пользователь следовал спецификации параметров для функции Open(), но несмотря на это, ошибка не была устранена. Важно отметить, что модуль Word2010.pas предназначен для 32-битной архитектуры, поэтому компиляция производилась с использованием 32-битной целевой платформы.
Пример кода
procedure TDocPDF.ExOpenDocument(sDocFile: string);
var
WordApp: _ApplicationDisp;
DocsCollection: DocumentsDisp;
vTemplate: OleVariant;
// ... другие параметры ...
begin
// Инициализация Word
CoInitialize(nil);
WordApp := CoWordApplication.Create as _ApplicationDisp;
WordApp.Visible := True;
DocsCollection := WordApp.Documents as DocumentsDisp;
// Настройка параметров для команды .Open
vTemplate := sDocFile;
// ... настройка остальных параметров ...
try
DocumentTemplate := DocsCollection.Open(
vTemplate,
// ... передача параметров ...
);
except
on E: Exception do
Application.MessageBox(PChar('Problem: ' + E.Message), PChar('ExOpenDocument'), MB_OK);
end;
end;
Решение проблемы
Пользователь получил совет от другого участника, который предложил упростить код. В частности, было предложено избегать лишних приведений типов и использовать простые типы данных для параметров, где это возможно:
После внесения изменений в код, пользователь успешно устранил ошибку. Он также отметил, что является новым пользователем Stack Overflow и выразил благодарность за помощь.
Выводы
Использование простых типов данных для параметров, где это допустимо, и упрощение кода могут помочь избежать ошибок, связанных с некорректными типами данных в OLE-Автоматизации. Важно также правильно настроить архитектуру компиляции в соответствии с требованиями используемых библиотек.
Пользователь столкнулся с проблемой OLE-Автоматизации при попытке открыть документ Word 2010 из Delphi XE7, решив которую, упростил код и изменил типы данных для параметров, что позволило устранить ошибку.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS