![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
RecordSet из DLL
tlan © (2004-05-04 18:34:00)Доброе всем время суток.
Возникло два таких вопроса (использую ADOQuery):
1. Функция, которая определена в dll, возвращает значение RecordSet, т.е. набор даных, которые она отобрала из базы например:
function DocSearch(uid:SmallInt, upart:SmallInt):TRecordSet;
Могу ли я из основной программы получить данные, которые она вернула? И если да, то как.
tlan (2004-05-04 20:30:00) [1]вроде бы все работАет!
сам допустил некоторые ошибки, а функции так и должны выглядеть.
Спасибо за внимание.
tlan (2004-05-04 20:15:00) [2]вылетает Ошибка: Privileged Instruction
tlan (2004-05-04 20:08:00) [3]в 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);
Polevi (2004-05-04 19:46:00) [4]приведи код ф-ии полностью
tlan (2004-05-04 19:17:00) [5]я попробовал так:
функция в dll:
function DocSearch(uid:SmallInt; upart:SmallInt):_RecordSet;
вызывается в программе:
fmMainQuery.Recordset:=DocSearch(UserID,UserPart);
но приложение глухо "уходит в себя" без всяких ошибок.
А как это через IRecordset, если можно попобдробнее.
Polevi (2004-05-04 18:46:00) [6]можно возвращать IRecordset интерфейс - ADOQuery.Recordset