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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.049 c
1-1098096942
Term
2004-10-18 14:55
2004.10.31
Сервер при приёме файла падает


1-1097848117
Фёдор Мегатронов
2004-10-15 17:48
2004.10.31
Какая функция жрёт больше ресурсов ?


14-1097247361
fag2000
2004-10-08 18:56
2004.10.31
Помогите перевести PHP strftime в человеческие дату и время.


1-1097944789
ИМХО
2004-10-16 20:39
2004.10.31
Текстовый файл огромного размера


1-1097650128
Rentgen
2004-10-13 10:48
2004.10.31
Как узнать число-ли переменная S:String;