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

Вниз

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

 
ЗМВ   (2003-09-10 15:51) [0]

Уважаемые мастера. Помогите новичку разобраться с DLL. Мне нужно написать программу, которая загружает 2 DLL. Одна подключает БД Access 97 по введенным параметрам, а 2-ая позволяет редактировать данные. Отображение на главной форме с помощью DBGrid. Текст первой библиотеки приведен ниже. При компиляции ошибок нет. В программе (см. ниже) осуществляется вызов процедур, но при запуске выдается ошибка "не вызван метод CoInitialize". Help помог мало, тк в английском я не силен, а в примерах вызова метода я не нашел.

library Project1;
...
type
P=^_RecordSet;

var
ADOCon:TADOConnection;
ADODst:TADODataSet;

procedure OpenDB(ConStr:PChar); stdcall;
begin
ADOCon:=TADOConnection.Create(nil);
ADOCon.ConnectionString:=WideString(ConStr);
ADOCon.Open;
ADODst:=TADODataSet.Create(ADOCon);
ADODst.CommandType:=cmdText;
ADODst.CommandText:="select Ware, Amount, Price from table";
ADODst.Open;
end;

procedure CloseDB; stdcall;
begin
ADODst.Close;
ADODst.Free;
ADOCon.Close;
ADOCon.Free;
end;

function GetRecordSet():P; stdcall;
begin
Result:=@ADODst.Recordset;
end;

exports
GetRecordSet,
OpenDB,
CloseDB;
....
----------------------------------------------
unit Unit1;
....
type P=^_RecordSet;

var
Form1: TForm1;

function GetRecordSet():P; external "Project1.dll";
procedure OpenDB(ConStr:PChar); external "Project1.dll";
procedure CloseDB; external "Project1.dll";

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDB(PChar(ADOConnection1.ConnectionString));
end;
....


 
clickmaker ©   (2003-09-10 15:56) [1]

А какой такой пример ты ожидал найти? :)

CoInitialize(nil) - и всё


 
ЗМВ   (2003-09-10 15:59) [2]

А где именно его вызвать?


 
clickmaker ©   (2003-09-10 16:14) [3]

Перед первым обращением к любому COM-объекту. В начале OpenDB, например.


 
ЗМВ   (2003-09-10 16:18) [4]

Выскакивает ошибка, что метод неизвестен.

procedure OpenDB(ConStr:PChar); stdcall;
begin
CoInitialize(nil);
ADOCon:=TADOConnection.Create(nil);
ADOCon.ConnectionString:=WideString(ConStr);
ADOCon.Open;
ADODst:=TADODataSet.Create(ADOCon);
ADODst.CommandType:=cmdText;
ADODst.CommandText:="select Ware, Amount, Price from table";
ADODst.Open;
end;


 
clickmaker ©   (2003-09-10 16:37) [5]

При компиляции?

uses ActiveX


 
ЗМВ   (2003-09-10 16:46) [6]

спасибо. ошибок не выдает. Что бы я без Вас делал? :-)))


 
HolACost! ©   (2003-09-10 18:18) [7]

Для справки
DLL - уже включает слово Library!



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
1-56589
Yura12345
2003-11-05 14:16
2003.11.17
Копирование листов рабочей книги Excel(+)


1-56659
Raduga
2003-11-05 11:22
2003.11.17
Процессы и СОМ-объекты


4-56957
Marat_n
2003-09-22 21:41
2003.11.17
программа, работающая во время простоя системы


14-56837
Bovdur
2003-10-27 14:50
2003.11.17
размер ехе-шника.


8-56773
Col Isaev
2003-07-18 13:40
2003.11.17
Сохранение куска битмап в массив