powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / вызов ADO из DLL
16 сообщений из 16, страница 1 из 1
вызов ADO из DLL
    #34407404
SNVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделал dll-ку, в которой есть функция использующая ADOQuery, ADOConnection, ADOTable.

не без трудностей, но скомпилировал.

Теперь подгружаю ее из другой программы, пишет Access violation... :(

В чем может быть дело?

1) статически функция, использующая адо, работала. т.е. подобных ошибок не возникало. так что сама функция абсолютна верна.
2) в данный момент к dll-ке при построении добавлены библиотеки (vcl.lib, odbc32.dll, adortl.lib). Может еще надо добавить?
3) dll-ка подгружается динамически (loadlibrary)
4) дело точно в адо, т.к. до места с адо все из длл-ки выполняется.

Помогите! :)
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34407704
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CoInitialize(NULL);
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34409410
SNVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это надо писать в длл-ке или в программе при вызове?

В любом случае не поможет, т.к. в билдере нет такой функции.
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34409923
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SNVI
Это надо писать в длл-ке или в программе при вызове?

Конечно в Длл-ке.

SNVI
В любом случае не поможет, т.к. в билдере нет такой функции.

Фигасе утверждение !

#include <objbase.h>
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34410070
SNVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
оке. попробую. в хелпе этой функции точно нет )
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34410085
SNVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал в самое начало глючной функции с АДО CoInitialize(NULL); , ошибка не исчезла :(

проверил CoInitialize(NULL); возвращает 1.
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34410130
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeart SNVI
Это надо писать в длл-ке или в программе при вызове?

Конечно в Длл-ке.Вообще-то, не в dll, а в треде.

А вообще, использовать ADO в С++ это извращение.
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34410141
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Вообще-то, не в dll, а в треде.
Я образно...
White Owl
А вообще, использовать ADO в С++ это извращение.

Странное утверждение :)
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34410151
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeart White Owl
Вообще-то, не в dll, а в треде.
Я образно...Образно не различать длл и тред это сильно. Это пять.
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34410264
SNVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критический код, перед которым вылазит ошибка access violation..

ADOQuery1->Close();
ADOConnection1->Close();
ShowMessage(vfdir+tabname);

S.printf("Provider=MSDASQL.1;Persist Security Info=False;Data Source=Ôàéëû dBASE;Mode=Read;Initial Catalog= %s", vfdir);
ADOConnection1->ConnectionString = S;
ADOConnection1->LoginPrompt = false;

ADOQuery1->SQL->Clear();
ADOQuery1->Connection = ADOConnection1;

//Query block
Sq.printf("select * from %s",tabname);
ADOQuery1->SQL->Add(Sq);

ADOQuery1->Active = true;
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34410309
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl JibSkeart White Owl
Вообще-то, не в dll, а в треде.
Я образно...Образно не различать длл и тред это сильно. Это пять.

Хмм ...
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34410317
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    
        CoInitialize(NULL);
        ADOQuery1->Close();
        ADOConnection1->Close();
         ShowMessage(vfdir+tabname);

        S.printf("Provider=MSDASQL.1;Persist Security Info=False;Data Source=Ôàéëû dBASE;Mode=Read;Initial Catalog= %s", vfdir);
        ADOConnection1->ConnectionString = S;
        ADOConnection1->LoginPrompt = false;

        ADOQuery1->SQL->Clear();
        ADOQuery1->Connection =  ADOConnection1;

        //Query block
        Sq.printf("select * from %s",tabname);
        ADOQuery1->SQL->Add(Sq);

       ADOQuery1->Active = true;[/quot]
      ...
     // CoUninitialize();

У вас это точно длл-ка ?
Откуда такое странное название обьектов ?
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34410568
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закрытие коннекшна перед использолванием смущает.
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34410658
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовать ADO - извращение, сто пудофф :)
Особенно для доступа к DBF из C++ Builder-а
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34411715
SNVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. это длл-ка точно, просто я привел кусок кода где используется АДО.
2. АДО использую потому, что БДЕ не захотел подгружать таблицы фокспро. не знаю почему :)
3. спасибо за внимание. решил оставить екзе-шник, ибо время не терпит.
...
Рейтинг: 0 / 0
вызов ADO из DLL
    #34413181
SNVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема решилась. Нужно проверить 2 вещи.

1. Добавить выделение памяти для объектов
TADOConnection *ADOConnection1=new TADOConnection(NULL);
TADOQuery *ADOQuery1=new TADOQuery(NULL);

2. Если потребуется добавить еще и инициализацию ком-объекта
CoInitialize(NULL);

Спасибо всем!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / вызов ADO из DLL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]