전에도 한번 올렸는데 또 올리게 되네요....
능력이 미천한 사람이 여러사람들을 귀찮게 하는 것 같아서 정말 죄송합니다.
나름대로 해결해 볼려고 했으나 잘 되질 않는군요..
전에 제가 질물했을때 김태균님께서 답변을 해 주셨으나...
태균님의 procedure는 메인폼에서 DLL함수를 호출할 때
Database의 handle값을 넘겨주는데....
이렇게 하면 type이 일치하지 않는다는 error message가 자꾸 떠서리....
다음은 태균님의 source인데 고수님들의 한수지도를 부탁...
============================================================
library testdll;
uses
bde, db, dbtables, dialogs;
procedure myDLLCall(dbHandle : hdbidb); stdcall;
var
Database : TDatabase;
Query : TQuery;
begin
Database := TDatabase.Create(nil);
try
Database.DatabaseName := 'Test'; {새 알리아스}
Database.Handle := dbHandle;
Query := TQuery.Create(nil);
try
with query do
begin
DatabaseName := Database.DatabaseName;
Close;
SQL.Clear;
SQL.Add('SELECT SYSDATE FROM DUAL');
Open;
ShowMessage(Query.FieldByName('SYSDATE').AsString);
end;
finally
Query.Free;
end;
finally
Database.Free;
end;
exports
myDllCall;
begin
end.
//프로그램에서 호출과 사용
unit appl;
uses
Windows, Messges, SysUtils, Classes, Graphics, Contrils,
Forms, Dialogs, StdCtrls, DB, BDE;
type
TForm1 = class(TForm)
dbSQLServer : TDatabase;
Button1 : TButton;
procedure Button1Click(Sender : TObject);
end;
var
Form1 : TForm;
procedure myDllCall(dbHandle : hdbidb); stdcall; external 'TESTDLL.DLL'
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender : TObject);
begin
dbSQLServer.Open;
myDllCall(dbSQLServer.Handle); ///////바로 여기에서 Error가..흑..
end
============================================================
hdbidb와 dbSQLServer.Handle의 type이 일치하지 않는다는 Error가...
가르침을 주시면 정말 고맙겠습니다....