Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с COM-объектом (EXCEL, WORD) из консольного приложения [D6, WinME, Win2k]


SergP. ©   (2005-07-12 16:06:00) 

Не получается сабж. Кто что может подсказать?

Например при запуске проги откомпилированой из такого кода:

program Project2;

{$APPTYPE CONSOLE}

uses
 SysUtils,comobj;

var
MyExcel:Variant;

begin
   MyExcel:=CreateOleObject('Excel.Application');
   MyExcel.WorkBooks.Add;
   MyExcel.Visible:=true;
end.


Получаем исключение. При запуске из Дельфи получаем сообщение типа:

... Не произведен вызов Coinitialize ...

Как сделать чтобы работало?


begin...end   (2005-07-12 18:59:00) [1]

> SergP.   (12.07.05 18:53) [7]

Help -> Windows SDK
или
http://msdn.com

HRESULT CoInitialize(
  LPVOID pvReserved //Reserved, must be NULL
);


SergP.   (2005-07-12 18:53:00) [2]


> jack128 ©   (12.07.05 18:34) [6]
> SergP.   (12.07.05 18:17) [4]
> А параметр, который передается  в Coinitialize какой ставить?
> Хелп принципиально не читаем???


В хелпе нету вообще упоминания про Coinitialize


jack128   (2005-07-12 18:34:00) [3]

SergP.   (12.07.05 18:17) [4]
А параметр, который передается  в Coinitialize какой ставить?

Хелп принципиально не читаем???


DiamondShark   (2005-07-12 18:26:00) [4]


> Пока написал     CoInitialize(nil);

Правильно написал.


SergP.   (2005-07-12 18:17:00) [5]

А параметр, который передается  в Coinitialize какой ставить?

function CoInitialize(pvReserved: Pointer): HResult; stdcall;

Т.е. что означает pvReserved?

Пока написал     CoInitialize(nil);

Вроде бы работает. Но все же....


Digitman   (2005-07-12 16:26:00) [6]


> некоторые программисты


батонометатели ?)


Гаврила   (2005-07-12 16:18:00) [7]

Дело в том, что в "обычном" приложении Coinitialize вызывается автоматически, кодом VCL (при подключении соответствующего юнита).
Вследствие этого некоторые программисты на Delphi и не подозревают, что это обязательно


Digitman   (2005-07-12 16:09:00) [8]

как это что ? произвести оной вызов !

перед первым же обращением к олей-механизму .. т.е. перед CreateOleObject()

а после последнего обращения произвести, соответственно, вызов CoUninitialize()


Наверх

Титульная страница Поиск, карта сайта Написать письмо