![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
dll и Ado [D7, MSSQL]
Stas © (2003-12-11 10:41:00)
Никто не сталкивался с такой проблемой:
Есть процедура в dll-ке, которая пытается установить коннект через AdoConnection и открыть некий набор данных, но при попытки установить коннект в проекте вылазит ошибка Access violation.
Но вызывая ту же процедуру из VBA в Access все выполняется нормально !
dll написана на delphi !
Stas (2003-12-15 10:30:00) [1]
Спасибо ! Разобрался, все работает.
me (2003-12-12 17:55:00) [2]
Для вызова CoInitialize нужно подключить юниту ActiveX, вызывать просто как CoInitialize(nil);
в конце работы вызвать CoUninitialize();
Нужно обязательно делать, если СОМ сервис требуется в консольной аппликации и DLL. В обычной оконной аппликации CoInitialize вызывается неявно строчкой
Application.Initialize();
в файле проекта (*.dpr)
Stas (2003-12-12 14:08:00) [3]
KSergey © (12.12.03 13:53) [41]
К чему было твое появление в этой ветке ?
KSergey (2003-12-12 13:53:00) [4]
> [40] Stas © (12.12.03 12:24)
А почитать хелп - не судьба? Все эти вопросы там отлично освещены.
Да и в инете есть куча поисковиков...
Stas (2003-12-12 12:24:00) [5]
KSergey © (12.12.03 12:11) [39]
НЕТ :-). Никогда не приходилось сталкиваться. Нужно ли какой нибудь модуль подключать ? и какие параметры туда писать? и вообще куда ее вписать ?
Заранее спасибо!
KSergey (2003-12-12 12:11:00) [6]
Вы не знаете как вызвать ф-цию с именем CoInitialize??? ;)
Stas (2003-12-12 09:38:00) [7]
А что его тогда интересовало когда я написал все что нужно в
Stas © (11.12.03 11:37) [7]
Stas (2003-12-12 09:35:00) [8]
me (11.12.03 19:04) [33]
А можно подробнее как это сделать ?
KSergey (2003-12-12 09:34:00) [9]
> [35] Stas © (12.12.03 09:25)
Лучше, конечно, спросить у него самого, но, уверен, что как минимум комментарий от борланда (стандартный!!!!!!) его совершенно не интересовал. ;)
Stas (2003-12-12 09:25:00) [10]
KSergey © (11.12.03 17:28) [32]
Если бы ты внимательно все прочитал, то понял бы что это интересовало Vlad © (11.12.03 13:37) [22]
KSergey (2003-12-12 09:03:00) [11]
[33] me (11.12.03 19:04)
Стандартные грабли - в Dll используется сервтс ADO и не делается явная инициализация COM (CoInitialize)
Я хотел про это написать, однако ведь автор не жалуется на эиу ошибку, у него - AV - а потому видимо до проблемы CoInitialize дело еще не дошло...
Да и мы с вами ведь не знаем какое хост-приложение, может это производится в нем?
me (2003-12-11 19:04:00) [12]
Стандартные грабли - в Dll используется сервтс ADO и не делается явная инициализация COM (CoInitialize)
KSergey (2003-12-11 17:28:00) [13]
2 Stas:
Посмотрите еще раз код, посланный вами и скажиме: он информативен? Комуто вообще интересно читать наименование модуля, а тем более стандартный комментарий борланда??
Stas (2003-12-11 14:24:00) [14]
Stas © (11.12.03 14:17) [30]
Все работает !
Это уже я немного прогнал. Подключал твою Dll, с твоей строкой подключения в AdoConnection.
СПАСИБО !!!
Stas (2003-12-11 14:17:00) [15]
akim2 (11.12.03 14:00) [28]
Попробывал твой проект !
При динамическом подключении твоей dll, я проверял пошагово дошло до вызова самой процедуры (последняя строчка) и подвисло приложение. А при статическом тоже самое что и у меня.
Пробывал на D6,D7 винда XP. Еще у двух человек такое на D7,D6 под 2000.
Может быть MDAC глючит ?
Самое интересное что из Access вызывается все нормально !
Stas (2003-12-11 14:05:00) [16]
Спасибо получил!
akim2 (2003-12-11 14:00:00) [17]
Ушло,
Токо я бы тебе рекомендовал не использовать статический вызов библиотек кот работают с ADO и кот создают формы, а так же в библиотеках не пользоваться TDataModule. Клади компоненты сразу на форму
Stas (2003-12-11 13:50:00) [18]
akim2 (11.12.03 13:47) [26]
О класс!
посылай !
Заранее благодарен.
akim2 (2003-12-11 13:47:00) [19]
Я могу Stas на мыло послать работающий проект?
Stas (2003-12-11 13:43:00) [20]
akim2 (11.12.03 13:40) [24]
см. Stas © (11.12.03 13:29) [19]
Если я вставлю в процедуру ShowReport строку
Con:=TAdoConnection.Create(nil);
то вызовется ошибка.
Как ты это делаешь ?