Q&A

  • 아래 dll 과 db에 대하여...
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.

0  COMMENTS