Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
ВнизFirebird + IBX .. Помогите, plz. Найти похожие ветки
← →
Святослав (2004-10-05 19:23) [0]Вот такая проблема.
Есть главное приложение, которое работает с плагинами. В нем есть компонент IBDatabase1. Ссылка на него передается в плагин-dll.
Плагины одинаковы, но с разными именами (CANew.dll, ContrAgent.dll).
В них вызывается одинаковый запрос (select * from contragents;)
Так вот, когда вызывем любой плагин, а потом другой – получается Access Violation.
Если несколько раз один и тот же – Access Violation не происходит.
Раскопки показали, что он происходит при открытии запроса, где в глубине IBDatabase.pas, в районе TIBSchema.
Помогите, пожалуйста!
IBX 6.08 (update) + Firebird 1.0.3.972
-Main app---------------------------------------------------
if (Sender as TIMage).tag = 11 then
Handlex := LoadLibrary(Pchar("ContrAgent.dll"));
if (Sender as TIMage).tag = 12 then
Handlex := LoadLibrary(Pchar("CANew.dll"));
if Handlex >= 32 then
begin
@IL := nil;
@IL := GetProcAddress(Handlex, "Start");
if @IL <> nil then
begin
IL(IBDatabase1,Application,UserID);
end;
FreeLibrary(Handlex);
End;
DLL:--------------------------------------------------------------------
procedure Start(IB : TIBDatabase; App : TApplication; UserID : integer); stdcall;
begin
FrmPluginMain:=TFrmPluginMain.CreateParented(Application.Handle);
FrmPluginMain.IBDatabase1:=IB;
FrmPluginMain.ShowModal;
FrmPluginMain.Free;
end;
В форме:
procedure TFrmPluginMain.FormShow(Sender: TObject);
begin
IBQuery1.Database:=IBDatabase1;
IBTransaction1.DefaultDatabase:=IBDatabase1;
IBTransaction1.StartTransaction;
IBQuery1.Open; ///!!!! Вот тут..
end;
procedure TFrmPluginMain.FormHide(Sender: TObject);
begin
IBQuery1.Active:=false;
if IBTransAction1.InTransaction then IBTransAction1.Commit;
end;
← →
DrPass © (2004-10-05 21:17) [1]Скорее всего, дальнейшие раскопки покажут, что AV происходит в глубине менеджера памяти по причине отсутствия в секции uses модуля sharemem
← →
jack128 © (2004-10-05 22:07) [2]длл - это обязательное условие?? помимо ShareMem есть еще тонкие моменты, которы не обойти. Лудше сразу использовать пакеты.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.03 c