Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > проблемы с TWordApplication Word2007


Автор: yogin 29.9.2010, 23:54
Всех приветствую.
Проблема следующая, имеется код:
Код

  fn := ExtractFilePath(Application.ExeName) + 'shablon3.doc';
  WordApplication1.Connect;
  WordApplication1.Documents.Open(fn, EmptyParam, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
  WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
  WordApplication1.Options.CheckSpellingAsYouType := FALSE;
  WordApplication1.Options.CheckGrammarAsYouType := FALSE;

Это открытие определённого файла для редактирования таблицы в нём.
Вылетает на методе Open со словами: "rased exception class EIntfCastError with message 'Interface not supported'. Process stoped."
Ошибка при компиляции началась когда установил ворд 2007, раньше при написании программы стоял ворд 2003.
Сам TWordApplication нужен мне для такого метода как:
Код

WordDocument1.Tables.Item(NumTab).Cell(row, col).Range.Text

ПО: Delphi7, Word2007.

Помогите разрешить проблему, что надо делать, кто сталкивался?

Автор: Xenag 30.9.2010, 04:25
Ну во-первых, нужно такие вызовы брать в try .. except.
А во-вторых, тут явно написано, что формат вызова изменился.
Так что нужно смотреть подсказки компилчтора.

Автор: yogin 30.9.2010, 08:02
Цитата(Xenag @ 30.9.2010,  04:25)
Ну во-первых, нужно такие вызовы брать в try .. except.
А во-вторых, тут явно написано, что формат вызова изменился.
Так что нужно смотреть подсказки компилчтора.

Жаль, но ничего нового не сказал.
Ещё варианты решения проблемы? Желательно кто ясно знает решение...

Автор: Albinos_x 30.9.2010, 18:21
при пошаговой отладке на какой строчке вываливается ошибка?:
у меня этот код отрабатывает корректно под 2003 и 2007 офисы:
Код

WordApp.Documents.Open(FileNameOle, EmptyParam, EmptyParam, EmptyParam,
                                 EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                                 EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                                 EmptyParam, EmptyParam, EmptyParam);


Добавлено через 3 минуты и 11 секунд
будет ли вываливаться ошибка если закоментить отключение проверки граматики или правописания, или того и другого вместе?

Автор: cat512 30.9.2010, 20:13
Как то странно, у Albinos_x работает, у тебя вылетает, такое ощущение что инсталляха палёная, как будто некоторых библиотек не хватает. Если бы ты использовал не Automation, а раннее связывание то можно было бы проверить на этапе компиляции, подсунув в проект TLB от 2007 а с автомэйшн никак. 
Попробуй переставить офис из другого дистибутива

Добавлено @ 20:14
Или возможно что-то не доставил

Автор: Albinos_x 2.10.2010, 21:20
cat512, речь идет о встроеных в делфи библиотеках... так что tbl тут скорее всего не при чем... и оффис возможно тоже.... может если только параметры безопасности очень высокие... тогда обращения к серверу могут блокироваться... или частично блокироваться...

Автор: cat512 3.10.2010, 11:44
Цитата(Albinos_x @ 2.10.2010,  21:20)
cat512, речь идет о встроеных в делфи библиотеках... так что tbl тут скорее всего не при чем... и оффис возможно тоже.... может если только параметры безопасности очень высокие... тогда обращения к серверу могут блокироваться... или частично блокироваться...

Не буду гадать по поводу возможной причины возник.  проблеммы, возможно вы не поняли, как может быть  связанно отсутствие некоторых библиотек (com серверов) .
"Встроенные в делфи библиотеки" используют интерфейсы Microsoft Office. Если бы это было не так, то все мы использовали бы программу  Borland office, а не MO. В среду импортируются враппера, точнее сказать среда генерит враппера интерфейсов, на основе библитотеки типов. И при установки Delphi, у вас в мастере вываливается вкладка, где вы выбираете, для какой версии офиса установливать тот или иной набор врапперов. Но ВСЕ они юзают, интерфейсы, описанные в TLB, предоставляемые набором конкретных DLL, упакованных в соответсвующий дистрибутив офиса. И по скольку используется Automation(позднее связывание), то отсутствие какой нибудь, даст в runtime ошибку.

Добавлено @ 11:49
Навряд ли "высокие параметры безопаности" дадут ошибку "Interface not supported"

Автор: Albinos_x 5.10.2010, 14:55
Цитата(cat512 @  3.10.2010,  11:44 Найти цитируемый пост)
Но ВСЕ они юзают, интерфейсы, описанные в TLB, предоставляемые набором конкретных DLL, упакованных в соответсвующий дистрибутив офиса.


Цитата(yogin @  29.9.2010,  23:54 Найти цитируемый пост)
Ошибка при компиляции началась когда установил ворд 2007


если проблема c TBL, то она была бы и при 2003 оффисе...

Цитата(cat512 @  3.10.2010,  11:44 Найти цитируемый пост)
Навряд ли "высокие параметры безопаности" дадут ошибку "Interface not supported"

точно не помню... дано сталкивался с проблемой... еще стоит проверить безопасность макросов в самом оффисе...

но хотелось бы услышать автора данного топика и его ответы на мои вопросы, тогда мы сможем понять в чем дело... а не гадать на кофейной гуще...

Автор: yogin 26.10.2010, 15:21
Цитата(Albinos_x @ 30.9.2010,  18:21)
будет ли вываливаться ошибка если закоментить отключение проверки граматики или правописания, или того и другого вместе?

Всем спасибо за анализ проблемы. 
Опять загрузив недавно исходники, проблема вдруг исчезла...
Я склоняюсь к тому, что видимо исключение не касалось метода .Open, а было в другом месте(расчёт данных, при открытом вордАпи, для заполнения отчёта).
Ответ на вопрос: в прошлый раз при коментировании проверок ошибка всё равно была.

Автор: yogin 1.11.2010, 16:18
Встала новая проблема в вопросе этого компанента.
А где TWordApplication в Delphi XE или в Delphi 2010??
Немогу найти...
Если его нет, то как тогда работать с вордом, чтобы выполнять задачи о которых я говорил выше? 
а именно - мне нужно заполнять таблицы в ворде.

Автор: Albinos_x 3.11.2010, 15:16
на какой закладке не знаю... по идее на той же services... если что подключи модуль создавай их динамически...

Автор: Regulum 5.1.2011, 11:23
Цитата(yogin @ 1.11.2010,  16:18)
Встала новая проблема в вопросе этого компанента.
А где TWordApplication в Delphi XE или в Delphi 2010??
Немогу найти...
Если его нет, то как тогда работать с вордом, чтобы выполнять задачи о которых я говорил выше? 
а именно - мне нужно заполнять таблицы в ворде.

Насчет XE ничего не могу сказать, а вот в D2010 по умолчанию компоненты для работы с MS Office не устанавливаются. При инсталляции Delphi нужно указать необходимость их установки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)