Текущий архив: 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.45 MB
Время: 0.039 c