Делаю программу, которая формирует однотипные вордовские документы. Документ в виде шаблона, программа создает документ из шаблона, заполняет поля и сохраняет по формату. В основном потоке все работает отлично, но блин перенести его в дочерний никак не получается, все время что-то не так ему. Либо опять же вешает приложение. Кто что предложит.
Работа с OLE в дочернем потоке
Работа с OLE в дочернем потоке
|
31.05.2010 21:10:46
|
|
|
|
|
|
01.06.2010 00:08:25
А можно поподробнее пожалуйста о возникающих ошибках.
И неплохо было бы предоставить текст программы... |
|
|
|
|
|
01.06.2010 07:35:23
Ошибка,выходит такая. "Приложение обратилась к интерфейсу, принадлежавшему к другому потоку"
|
|||
|
|
|
|
01.06.2010 09:36:55
Попробуйте создать COM-объект не в основном, а в дочернем потоке приложения
Каждая нить, использующая COM, должна вызывать CoInitialize или CoInitializeEx (объявлены в модуле ActiveX), прежде чем начать работу с COM. В случае использования OLE вызов CoInitialize может быть заменён на OleInitialize. В главной нити обычного приложения CoInitialize при необходимости вызывается кодом VCL (конкретно - модулем ComObj), но если порождается дополнительная нить, использующая COM, или создаётся сервис, консолное приложение и т.п., вызов CoInitialize(Ex) в неё приходится вставлять вручную. Равно как и CoUninitialize при завершении. Зачем нужны вызовы CoInitialize и CoUninitialize, можно прочитать здесь: http://podgoretsky.com/ftp/Docs/Delphi/DX/COMmodel.html http://msdn.microsoft.com/en-us/library/ms678543(VS.85).aspx Попробуйте так:
Книга в тему (сам по ней учился работать с Office в Delphi;) ): Корняков В. Н. - "Программирование документов и приложений MS Office в Delphi".
Изменено:
Valera - 01.06.2010 11:35:05
|
|||
|
|
|
|
17.06.2010 09:59:25
max katonin, получилось?
Почему-то нет от Вас ответа... |
||||
|
|
|
|||
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)