![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с 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()