unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, DB,
BDE; // 꼭!
type
TForm1 = class(TForm)
Database1: TDatabase;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
procedure mydllcall(dbHandle:hdbidb); stdcall; external 'TESTDLL.DLL';
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
//여기에서 연결하고...
database1.connected := true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//이곳에서 dll에 핸들을 넘겨줍니다.
mydllcall(database1.handle);
end;
end.
-----------------------------------------------------------
// 아래 부분을 참고하십시오.
// 이것은 제가 쓰는 것의 부분을 그냥 발췌해서
// 어지럽습니다만 mydllcall() 를 참고하시면,
// 매번 새로접속을 않하며 세션을 검사해도 증가되진 않는
// 그러니까 세션 공유라고...
library testdll;
uses
SysUtils,
forms,
StdCtrls,
Windows,
BDE, // 꼭!
DB,
DBTables,
Dialogs,
Classes,
uCode in 'DLLcodeuCode.pas' {frmCode},
procedure mydllcall(dbhandle:hdbidb);stdcall;
begin
try
Application.CreateForm(TDM1,DM1);
dm1.cDatabase.handle := dbHandle;
Application.CreateForm(TfrmCode,frmCode);
try
frmCode.Showmodal;
finally
frmCode.free;
end;
finally
dm1.free;
end;
end;
exports mydllcall;
begin
end.