我在主程序里有一个数据模块,已经创建并连接到数据库上了, 我在另一个DLL里如何可以直接使用他而不需要TDataModule.Create(Self)再创建它,因为主程序里已经有了连接到数据库了????
解决方案 »
- 这样的SQL怎么写
- 用delphi用calendar控件如何在edit里面显示日期
- dbgrideh组件哪里有下载呀?
- 在Delphi中怎么用Tdatabase组件来访问数据库?谢谢帮助
- 很急!问一个关于用webbrowser多线程下载的问题。大家帮帮忙啊!
- 怎样与服务器完全断开连接???急!急!急!!!
- 请救火,Delphi中如何生成一个Wizard,谢谢!
- 如何实现报表里面的自动换行
- 这段代码为什么不能执行(调用ClearCommError函数)
- 如何从字符串'A*1*2*7*9*11'中取出1,2,7,9,11到一个集合或数组中.
- 在WriteFile中PChar类型传递字符数组
- 点选listview的内容使其变为灰色不可重复点选,并取得其.caption值
interface类放在独立的单元文件中, 这个单元文件加入DLL项目和主程序项目
并编译!如果不太明白的话, 你可以到www.delphibox.com里下一个这样的例子.
用点心, 接口其实很简单.
unit Data;interfaceuses
SysUtils, Classes, DB, ADODB;type
TDataModule1 = class(TDataModule)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
private
{ Private declarations }
public
{ Public declarations }
end;var
DataModule1: TDataModule1;implementation{$R *.dfm}end.//主程序
program TestApp;{$APPTYPE CONSOLE}uses
//SysUtils,
ActiveX,
Data in 'Data.pas' {DataModule1: TDataModule};procedure Foo(DataModule: TDataModule1); external 'TestDll.dll';begin
CoInitialize(nil);
DataModule1:=TDataModule1.Create(nil);
DataModule1.ADOQuery1.Insert;
DataModule1.ADOQuery1.FieldByName('num').Value:=1;
DataModule1.ADOQuery1.Post;
Foo(DataModule1);
DataModule1.Free;
CoUninitialize;
ReadLn;
end.//动态库
library TestDll;uses
//SysUtils,
//Classes,
Data in 'Data.pas' {DataModule1: TDataModule};{$R *.res}procedure Foo(DataModule: TDataModule1);
begin
DataModule1:=DataModule;
DataModule1.ADOQuery1.First;
while not DataModule1.ADOQuery1.Eof do
begin
WriteLn(DataModule1.ADOQuery1.FieldByName('num').Value);
DataModule1.ADOQuery1.Next;
end;
end;exports
Foo;beginend.