Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
15-1152680424
начинающий
2006-07-12 09:00
2006.08.06
Можно ли квотировать ICS?


3-1149255382
viper_gooz
2006-06-02 17:36
2006.08.06
DBF файлы


2-1153303018
BAX
2006-07-19 13:56
2006.08.06
Грид?


2-1153104346
koha
2006-07-17 06:45
2006.08.06
Как программно узнать версию собственной программы


2-1152957810
Лыган
2006-07-15 14:03
2006.08.06
Помогите с MaskEdit !




   Наверх