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

Вниз

D7 и IB6.5 в DLL   Найти похожие ветки 

 
AlexandrPV ©   (2004-07-22 15:09) [0]

Кто ме объяснит проблему. У меня есть основная программа в которой находится подключение к базе, а в DLL написаны формы и запросы, так вот когда я использую одновремено две DLL, то происходит ошибка, что-то вроде переобъявления курсора.


 
Desdechado ©   (2004-07-22 19:04) [1]

а ты не хочешь хотя бы показать, как ты вызываешь DLL, что передаешь в нее
и расскажи, что ты понимаешь под курсором, и какая ошибка - полный текст, а не твои догадки о ней


 
AlexandrPV ©   (2004-07-23 12:15) [2]

Ошибка "Dynamic SQL Error|SQL error code = -502|Declared cursor alredy exists."
Смысл в том, что если грузить библиотеки не вместе, то ошибки нет.
В главной програме я подключаю библиотеку следующим образом:
 Инициализация:
 HandleWares:=LoadLibrary("WFReestrWares.dll");
 if HandleWares<>0 then
   begin
     @FGet:=GetProcAddress(HandleWares,"GetInterface");
     Wares:=FGet(Application);
     if Wares<>nil then Wares.Base:=IBDatabase1;
   end;
 Показ формы:
 Wares.Show;
 Так же и другая форма вызывается.
В библиотеке:
function GetInterface(App:TApplication):TFormWares;
 begin
   if not Assigned(DLLApp) then
     begin
       DLLApp:=Application;
     end;
   Application:=App;
   Result:=TFormWares.Create(App);
 end;
procedure TFormWares.FormShow(Sender: TObject);
begin
 IBQuery1:=TIBQuery.Create(Self);
 IBQuery1.SQL.Append("select * from wares");
 IBQuery1.Database:=FBase;
 Trans:=TIBTransaction.Create(Self);
 Trans.AddDatabase(FBase);
 IBQuery1.Transaction:=Trans;
 Trans.StartTransaction;
 IBQuery1.Open;
end;
procedure TFormScale.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 if Trans.Active then Trans.Commit;
 IBQuery1.Destroy;
 Trans.Destroy;
end;

procedure MyDLLProc(Reason:integer);
begin
 if Reason = DLL_PROCESS_DETACH then
  if Assigned(DLLApp) then Application:=DLLApp;
end;

begin
 DLLProc:=@MyDLLProc;
end.

Вот вобщем и все.


 
Desdechado ©   (2004-07-24 20:29) [3]

1. Не вижу объявления переменных IBQuery1 и Trans. Они локальные, глобальные или свойства формы?
2. Я так и не понял - формы в ОДНОЙ ДЛЛ или в разных?
3. В другой форме SQL-текст такой же?
4. Destroy вызывать напрямую - дурной тон, читай доку.



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

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

Наверх




Память: 0.47 MB
Время: 0.042 c
14-1091292086
Knight
2004-07-31 20:41
2004.08.22
Люди... напишите полезные утилиты в пределах 5 метров...


9-1083671803
alless
2004-05-04 15:56
2004.08.22
Sprite &amp; Button


1-1091620202
Anton777
2004-08-04 15:50
2004.08.22
Удаление файла при помощи реестра


1-1091639532
bloodman
2004-08-04 21:12
2004.08.22
Вызов функции главной программы из dll.


3-1091347786
viktor
2004-08-01 12:09
2004.08.22
field "XXX" not found