Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ADO + DLL

6
03 апреля 2008 года
George
4.1K / / 05.01.2007
Кто-нибудь пробовал пользовать ADO из DLL? Дело в том, что я столкнулся с такой вот жестью: у мну есть дллка, внутри форма (знаю, что это нехорошо, некрасиво, неправильно и т.д., но так уж получилось), а на форме есть компоненты ADO. И вот в событии FormCreate происходит ошибка. Кто-нибудь сталкивался с чем-нибудь подобным?

P.S. будет возможность - опишу ошибку поподробнее
6
03 апреля 2008 года
George
4.1K / / 05.01.2007
Текст ошибки:
EOleSysError: CoInitialize was not called.
11
03 апреля 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Washington
Кто-нибудь пробовал пользовать ADO из DLL? Дело в том, что я столкнулся с такой вот жестью: у мну есть дллка, внутри форма (знаю, что это нехорошо, некрасиво, неправильно и т.д., но так уж получилось), а на форме есть компоненты ADO. И вот в событии FormCreate происходит ошибка. Кто-нибудь сталкивался с чем-нибудь подобным?

P.S. будет возможность - опишу ошибку поподробнее



Я передаю в ДЛЛ TADOConnection, расположенную в главном приложении, работает нормально.
Попробуй в FormCreate прописать перед АДО компонентом OleInitialize(NULL)

6
03 апреля 2008 года
George
4.1K / / 05.01.2007
А если чуток подробнее - каким образом ты передаешь TADOConnection в дллку? А в FormCreate перед АДО - как можно что-то прописать?
11
03 апреля 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Washington
А если чуток подробнее - каким образом ты передаешь TADOConnection в дллку? А в FormCreate перед АДО - как можно что-то прописать?


на С++ только....

Код:
//в длл
extern "C" void __export __stdcall FirstLoad (TADOConnection *ADOConnection1)
{
  TStartForm *StartForm = new TStartForm(NULL);
  // можно прямо здесь OLE проинициализировать...
  //или же даже в самом ехе-шнике
  OleInitialize(NULL);
  StartForm->ADOQuery1->Connection = ADOConnection1;
.....
}
// в ехе
  dllp = LoadLibrary("init.dll");
  void (__stdcall *FirstLoad)(TADOConnection *ADOConnection1);
    if (dllp)
       FirstLoad = (void __stdcall(*)(TADOConnection *ADOConnection1)) GetProcAddress(dllp, "FirstLoad");
  if (FirstLoad)
     FirstLoad (DM->ADOConnection1);
...
}
6
03 апреля 2008 года
George
4.1K / / 05.01.2007
Вроде заработало, спасибки.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог