▼ sakiyamaさん
> たとえば、今のように全部のDLLがデータモジュールを
> 持つのではなく、ADO接続をするDLLを一個作ってそこから
> ConnectionObjectを取得してって感じです。
お〜おっ!素晴らしい。
完璧です。!(^^)!
以前、Dll化に挑戦したのですが、何せ未熟者ですので
挫折いたしました。
ありがとうございます。
////////////////////////////////////////////////////////////////////
// DLL -------------------------------------
(略)
var
dmSqlConnect: TdmSqlConnect;
procedure SqlConnect(out Connection:IUnknown);stdcall;
implementation
procedure SqlConnect(out Connection:IUnknown);
begin
if dmSqlConnect = nil then
dmSqlConnect := TdmSqlConnect.Create(nil);
if not dmSqlConnect.SqlConnect.Connected then
dmSqlConnect.SqlConnect.Open;
dmSqlConnect.SqlConnect.ConnectionObject.QueryInterface(IUnknown, Connection)
end;
{$R *.dfm}
procedure TdmSqlConnect.DataModuleDestroy(Sender: TObject);
begin
dmSqlConnect.Free;
end;
end.
//=====================================================================//
(略)
var
frmADOTest: TfrmADOTest;
procedure SqlConnect(out Connection: IUnknown);stdcall; external 'sqlConnection.dll';
implementation
{$R *.dfm}
procedure TfrmADOTest.Button1Click(Sender: TObject);
var
conn: IUnknown;
begin
SqlConnect(conn);
if conn = nil then Exit;
adoConect := TADOConnection.Create(Application);
adoConect.ConnectionObject := conn as _Connection;
ADOTable1.Connection := adoConect;
ADOTable1.TableName := 'ABC';
ADOTable1.Active := True;
end;
procedure TfrmADOTest.FormClose(Sender: TObject; var Action: TCloseAction);
begin
adoConect.Free;
end;
end.
///////////////////////////////////////////////////////////////////////
な、感じで・・・すかね。
実行時パッケージは、他の絡みもあり使えません。(^_^;)
> Firebird情報は
> http://nekomimi.s41.xrea.com/x/firebird/pukiwiki/
> が詳しいですね。
これは、知りませんでした。
|