Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.06.2014, 16:45
vikk vikk вне форума
Начинающий
 
Регистрация: 01.10.2010
Сообщения: 132
Репутация: 10
По умолчанию CoInitialize выдает то S_OK, то S_FALSE

Помогите, пожалуйста, разобраться в ситуации: использую функции чужой библиотеки, реализованной как COM-объект (извините за возможные ляпы в терминологии - эта тема для меня аналогична японскому языку(если кто-нибудь поделится ссылочкой, где можно образоваться насчёт COM-объектов начинающему программисту - по возможности на языке, близким к обычному неспециализированному русскому, т.е. "на пальцах", буду оч. благода!)). В авторском примере использования этих функций стоит вызов CoInitialize, при запуске он возвращает S_OK. Делаю свой проект по образу и подобию(только инициализацию провожу в разделе Initialization модуля, в котором использую функции библиотеки), у меня инициализация возвращает S_FALSE. НО!!! Функции библиотеки при этом работают адекватно. Означает ли это, что инициализация произошла автоматически до моего вызова и можно спокойно пользоваться такой программой? Или нужно всё-таки самой вызывать Coinitialize(и в этом случае - как добиться того, чтоб она возвращала S_OK)?
Да, в обсуждениях сходных ситуаций народ делает многопоточные приложения. У меня побочных потоков нет.
Спасибо всем, кто откликнется!
Ответить с цитированием
  #2  
Старый 23.06.2014, 18:41
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Первый раз вижу что проверяют результат CoInitialize, обычно вызвал и забыл Ну если так надо, то читаем справку:

Цитата:
Return Values
S_OK
Indicates the library was initialized successfully.
S_FALSE
Indicates that the library is already initialized or that it could not release default allocator.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 24.06.2014, 19:33
vikk vikk вне форума
Начинающий
 
Регистрация: 01.10.2010
Сообщения: 132
Репутация: 10
По умолчанию

Справка-то меня и навела на вопрос. Смутила вторая часть подчеркнутого предложения
Таким образом, правильно ли я понимаю, что вызывать CoInitialize нужно, а проверять - нет? Ну, или считать допустимыми результатми оба значения - и S_OK, и S_FALSE ?
А кто его вызывает вместо меня? Почему в разных проектах результат разный (то ~уже загружен, то всё ОК)?
Ответить с цитированием
  #4  
Старый 24.06.2014, 20:04
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

да, вызывать и не проверять результат вообще. просто:
Код:
CoInitialize(nil);
если не лень, можно искать в проектах где уже есть вызов.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:46.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter