Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
mande
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 14
1

Coinitialize и ADOConnection;

27.02.2012, 16:52. Просмотров 1330. Ответов 3
Метки нет (Все метки)

Всем доброго дня!

Одну вещь не понимаю, в Form Create делаю CoInitialize(NULL), все нормально проходит. Но как только кладу в форму TADOConnection CoInitialize не проходит, ошибку(-2147417831) выдает. В чем проблема, ведь и ADO нужен и CoInitialize.
Как только удаляю TADOConnection опять работает нормально.

Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2012, 16:52
Ответы с готовыми решениями:

CoInitialize и компоненты на форме
Помогите разобраться: добавляю некоторые компоненты на форму (например...

Не был произведен вызов CoInitialize при использовании CppWebBrowser
В программе 2 формы: 1 - основная программа 2 - заставка, пока проводится...

ADOConnection + try {}. как ?
При подключении к БД может возникнуть ошибка "Ошибка входа пользователя '...' "...

Ошибка при использовании ADOConnection
Здравствуйте! Нужна ваша помощь) Щелкаю дважды на ADOConnection1 и,...

AdoConnection многократно запрашивает логин/пароль
Работаю в Embarcadero RAD Studio 2010 , проблема заключается в следующем: К...

3
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,002
27.02.2012, 16:58 2
адо сам делает инициализацию. повторная не проходит. если хотите прямо сами сделать инициализацию придется в начале сделать анинициализе
0
mande
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 14
27.02.2012, 19:07  [ТС] 3
CoUninitialize;
делал, не получается.
0
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,002
27.02.2012, 21:32 4
странно должно было пройти. использовал конструкцию вида
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int com_init(void)
{
    if (FAILED(CoInitializeEx(0, COINIT_MULTITHREADED)))
    {
        CoUninitialize();
        if
        (
            FAILED(CoInitializeEx(0, COINIT_MULTITHREADED)) ||
            FAILED
            (
                CoInitializeSecurity
                (
                    0, //IN PSECURITY_DESCRIPTOR pSecDesc
                    -1, //IN LONG cAuthSvc
                    0, //IN SOLE_AUTHENTICATION_SERVICE *asAuthSvc
                    0, //IN void *pReserved1
                    RPC_C_AUTHN_LEVEL_PKT, //IN DWORD dwAuthnLevel
                    RPC_C_IMP_LEVEL_IMPERSONATE, //IN DWORD dwImpLevel
                    0, //IN void *pAuthList
                    EOAC_NONE, //IN DWORD dwCapabilities
                    0 //IN void *pReserved3
                )
            )
        )
        {
            return 1;
        }
    }
    return 0;
}
в проекте содержавшем вызовы вида
C++
1
Connection = CreateOleObject("ADODB.Connection");
это правда не компонент, но он по идее тоже должен был попытаться автоматически инициализировать COM в недрах ATL как это делают прочие штуки...
а чем не устраивает автоматически вызываемый CoInitialize
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2012, 21:32

Путь в ADOConnection
Как прописать путь в ADOConnection программно к БД Access?

Работа с ADOConnection
Можно ли динамически во время выполнения программы вывести форму подключения в...

ADOConnection c Access
При компилировании ошибка не возникает, а при запуске вот такое сообщение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru