Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.06;
Скачать: CL | DM;

Вниз

ADO компоненты в dll - инициализация   Найти похожие ветки 

 
Аццкий юзар   (2006-06-24 02:27) [0]

А как бы обойтись без формы и правильно проинициализировать адошки?
ADOxxx := TADOxxx.Create (nil) будет работать?


 
Palladin ©   (2006-06-24 09:13) [1]

самому то проверить сложно?


 
Savek   (2006-06-24 10:51) [2]

Будет, не забудь потом убить его!


 
isasa ©   (2006-06-24 10:58) [3]

Savek   (24.06.06 10:51) [2]
... не забудь потом убить его!


И не только убить, но и заключить в пару вызовов
CoInitializeEx(...);

....
CoUninitialize;


 
Аццкий юзар   (2006-06-25 03:49) [4]

Работает. Замечательно работает. Но почему-то не хочет автоматом инициализироваться при подключении dll (DLL_Process_Attach) - виснет.
А как лучше убить - через Free или Destroy? :(


 
Аццкий юзар   (2006-06-25 05:20) [5]

Вот мать их. Какой-то конфликт возникает с WebBrowser - ом. Хендл WebBrowser = 0 и вылет с ошибкой. И почему-то на CoUninitialize зависает зараза.


 
Аццкий юзар   (2006-06-25 06:21) [6]

У, мать их всех за ногу!
Частично нашёл решение проблемы, и без всяких CoInitializeEx

http://delphiworld.narod.ru/base/ado_dll.html

Только вот напрягает мессага

[Warning] MySQL_Driver.dpr(15): Unit "oleauto" is deprecated


 
Аццкий юзар   (2006-06-25 06:48) [7]

А вот ещё вопрос (прошу прощения за назойливость) - как лучше сделать.
1) Целиком в dll обрабатывать запросы и возвращать результат либо успех оперfции для Execut, например.
2) В dll вынести только процедуры для ADO компонент (open, close, Execut и т.д.), а всю обработку вести в exe.


 
Palladin ©   (2006-06-25 08:53) [8]


> Аццкий юзар   (25.06.06 06:48) [7]

в первом случае будет меньше вызовов, соответственно код (хоста) упростится, во втором случае возможна более гибкая работа с БД... вывод: сделай и то и то и в зависимости от ситуации пользуйся либо тем либо тем


 
sniknik ©   (2006-06-25 09:25) [9]

> Только вот напрягает мессага
> [Warning] MySQL_Driver.dpr(15): Unit "oleauto" is deprecated
по моему это означает, что использование повторно (гдето другой включенный модуль его тоже использует) и он подавлен (выброшен компилятором).


 
isasa ©   (2006-06-25 12:14) [10]

Аццкий юзар   (25.06.06 06:21) [6]

Тогда уже
{$Delphi}\Source\Rtl\Common\ ComObj.pas
т.е.

uses ComObj;

см. его секции
initialization и finalization

и неплохо бы извратится и присвоить, где-то, до того

CoInitFlags := COINIT_MULTITHREADED;

А что с
DLL_Process_Attach - ??


 
Антибайт   (2006-06-25 16:45) [11]


> А что сDLL_Process_Attach - ??

ADO шки не хотят инициализироваться. Виснет не Create. Пришлось отдельной процедурой делать.


> и неплохо бы извратится и присвоить, где-то, до того CoInitFlags
> := COINIT_MULTITHREADED;

Это как?


 
isasa ©   (2006-06-25 18:05) [12]

:)
Пока не видно кода DllMain(EnterProc или как там ее).
Гадать можно только на кофейной гуще. Телепатор у меня от жары отказал.


 
Антибайт   (2006-06-25 23:57) [13]

Да ничего сложного там нет


{
procedure DllEntryPoint (Reason : DWord);
begin
case Reason of

 DLL_Process_Attach  : begin
                        CoInitializeEx (nil, COINIT_MULTITHREADED);
                       end;

 Dll_Process_Detach  : begin
                        CoUninitialize;
                       end;                
end;
end;
      }

function Init : boolean; stdcall;
begin
result := true;

try
 ADOConnect := TADOConnection.Create (nil);
 ADOCmd := TADOCommand.Create (ADOConnect);
 ADODS := TADODataSet.Create(ADOConnect);
except
 result := false;
 exit;
end;

ADOCmd.Connection := ADOConnect;
ADODS.Connection := ADOConnect;
end;


....
initialization
 begin
  //DllProc := @DllEntryPoint;
  //DllEntryPoint (DLL_PROCESS_ATTACH);
 end;
 
finalization


хотя разницы на мой взгляд нет, можно было сразу сюда писать.

в uses добавил OleAuto.
DllEntryPoint закометтил ввиду ненужности.
ComObj посмотрел - явно CoInitializeEx  не вызывается, неявно по ходу дела тоже. Об том и речь?



Страницы: 1 вся ветка

Текущий архив: 2006.08.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.132 c
1-1151101641
Аццкий юзар
2006-06-24 02:27
2006.08.06
ADO компоненты в dll - инициализация


2-1153462397
Svetok
2006-07-21 10:13
2006.08.06
MySQL


3-1148975665
ksa2002
2006-05-30 11:54
2006.08.06
Текущая дата в InterBase


3-1149057311
Kolmax
2006-05-31 10:35
2006.08.06
Импорт данных


8-1139659652
Scorp123
2006-02-11 15:07
2006.08.06
Воспроизведение видео