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

Вниз

RecordSet из DLL   Найти похожие ветки 

 
tlan   (2004-05-04 18:34) [0]

Доброе всем время суток.
Возникло два таких вопроса (использую ADOQuery):
1. Функция, которая определена в dll, возвращает значение RecordSet, т.е. набор даных, которые она отобрала из базы например:
 function DocSearch(uid:SmallInt, upart:SmallInt):TRecordSet;
Могу ли я из основной программы получить данные, которые она вернула? И если да, то как.


 
Polevi ©   (2004-05-04 18:46) [1]

можно возвращать IRecordset интерфейс - ADOQuery.Recordset


 
tlan   (2004-05-04 19:17) [2]

я попробовал так:
функция в dll:
function DocSearch(uid:SmallInt; upart:SmallInt):_RecordSet;

вызывается в программе:
fmMainQuery.Recordset:=DocSearch(UserID,UserPart);

но приложение глухо "уходит в себя" без всяких ошибок.

А как это через IRecordset, если можно попобдробнее.


 
Polevi ©   (2004-05-04 19:46) [3]

приведи код ф-ии полностью


 
tlan   (2004-05-04 20:08) [4]

в dll:

Uses
 ...
 ActiveX,
 ADODB
 ...
function DocSearch(uid:SmallInt; upart:SmallInt):_RecordSet;
begin
 fmDocSearch:=TfmDocSearch.Create(nil);
 try
   fmDocSearch.UserID:=uid;
   fmDocSearch.UserPart:=upart;
   fmDocSearch.ShowModal;
   Result:=fmDocSearch.Query.Recordset;
 finally
   fmDocSearch.Free;
 end;
end;


в программе:

type
 TDocSearch=function(uid:SmallInt; upart:SmallInt):_RecordSet;
var
 LibHandle:THandle;
 DocSearch:TDocSearch;
begin
 LibHandle := LoadLibrary("RDSearch.dll");
 if LibHandle = 0 then
   raise Exception.Create("Не найдена библиотека RDSearch.dll")
 else begin
   try
     @DocSearch := GetProcAddress(LibHandle, "DocSearch");
     if @DocSearch <> nil then
     fmMainQuery.Recordset:=DocSearch(StrToInt(UserID),StrToInt(UserPart));
   except
     on E: Exception do
       ShowMessage("Возникла ошибка: " + E.Message);
   end;
 end;
 FreeLibrary(LibHandle);


 
tlan   (2004-05-04 20:15) [5]

вылетает Ошибка: Privileged Instruction


 
tlan   (2004-05-04 20:30) [6]

вроде бы все работАет!
сам допустил некоторые ошибки, а функции так и должны выглядеть.
Спасибо за внимание.



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

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

Наверх




Память: 0.47 MB
Время: 0.029 c
1-1084609118
Delphir
2004-05-15 12:18
2004.05.30
LowerCase по русски


9-1074697548
TButton
2004-01-21 18:05
2004.05.30
delphiX вывод текста


3-1083530028
Kirill
2004-05-03 00:33
2004.05.30
Открываются только 30 записей


14-1083935165
Mim1
2004-05-07 17:06
2004.05.30
Где взять клиент для этого форума


3-1083829796
}|{yk
2004-05-06 11:49
2004.05.30
Оптимизация процедуры построения дерева в FireBird 1.5