Главная страница
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.044 c
6-1081442931
AlexXn
2004-04-08 20:48
2004.05.30
Can t create new socket


9-1075640127
DrOne
2004-02-01 15:55
2004.05.30
Triangle Strip


14-1084535399
Соловьев
2004-05-14 15:49
2004.05.30
У кого-то получилось откомпилить клиента форума - DMClient?


11-1072781364
Vadim Petrov
2003-12-30 13:49
2004.05.30
XHelpgen и новаый KOL


1-1084857230
SiJack
2004-05-18 09:13
2004.05.30
Как определить что MessageBox уже показано и не показывать