Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

### Устранение ошибки OLE-Aвтоматизации при открытии Word 2010 из Delphi XE7

Delphi , Технологии , OLE

Устранение ошибки 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;

Решение проблемы

Пользователь получил совет от другого участника, который предложил упростить код. В частности, было предложено избегать лишних приведений типов и использовать простые типы данных для параметров, где это возможно:

var
  App: WordApplication;
  Docs: Documents;
  Doc: WordDocument;
begin
  App := CoWordApplication.Create;
  App.Visible := True;
  Docs := App.Documents;
  Doc := Docs.Open('C:\desktop\temp.docx', EmptyParam, EmptyParam, EmptyParam, ..., EmptyParam);

Комментарий пользователя

После внесения изменений в код, пользователь успешно устранил ошибку. Он также отметил, что является новым пользователем Stack Overflow и выразил благодарность за помощь.

Выводы

Использование простых типов данных для параметров, где это допустимо, и упрощение кода могут помочь избежать ошибок, связанных с некорректными типами данных в OLE-Автоматизации. Важно также правильно настроить архитектуру компиляции в соответствии с требованиями используемых библиотек.

Создано по материалам из источника по ссылке.

Описание контекста: Пользователь столкнулся с проблемой OLE-Автоматизации при попытке открыть документ Word 2010 из Delphi XE7, решив которую, упростил код и изменил типы данных для параметров, что позволило устранить ошибку.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: OLE ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 16:10:47/0.0033819675445557/0