Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.012 c
15-1152702450
QuickFinder
2006-07-12 15:07
2006.08.06
Wiki


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


2-1153407511
Sirus
2006-07-20 18:58
2006.08.06
Выбор принтера


2-1153396795
RobinBad
2006-07-20 15:59
2006.08.06
Чтение из файла по строкам


2-1152841836
Toy
2006-07-14 05:50
2006.08.06
DBText и DBComboBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский