為什麼我不能像以下那樣做: 首先創建一個DLL,包含如下Function function DoTest(H: THandle):TADOConnection; var AdoConnection1:TAdoConnection; begin Application.Handle :=H; with TFrmStart.Create(Application) do begin AdoConnection1.ConnectionString:='....'; AdoConnection1.Connected:=true; DoTest:=ADOConnection1.Create(Application); end; end;然後在我的主Form調用DLL ... implementation function DoTest(H: THandle):TADOConnection cdecl; external 'MyDLL.DLL';procedure TForm1.Button1Click(Sender: TObject); begin adoquery1.Connection:=DoTest(Application.Handle); adoquery1.Active:=true; end;
TO szkxy(雨鱼) NO.1: 但我的每一個Form都要Compile成獨立的Exe File,它們並不是在同一個Project裡的。//你这句话是错的,在同一个工程里边,只有一个.exe; 每一个form是compile,但是,他们最终到只生成一个.exe文件,这个.exe文件里,包含了所有了的本工程里的form,所以,你不用担心这一点:) //是应该好好看一看书的; NO.2: 用共享接口,其它的程序或是form就可以调用这个dll了;
To ihihonline(小小) No.1 我的每個Project都隻有一個Form,分別由不同的人完成,(但我的每一個Form都要Compile成獨立的Exe File,它們並不是在同一個Project裡的)
如果放到dll里边,按我的做法还是包含一个DataModule,然后,各个程序再调用,最有可能的是再做一个公共的接口(Unit),但是没有意思呀!
你可以想一想,如果是在不同的应该程序间用的话,放到DLL里边可以,但是,如果是在一个程序里,为的是让不同的窗体调用,那么为什么不放到DATAMODULE里边?
NO1;DLL→Unit→共享接口;
NO2:DataModule→各个窗体;
如果是动态建的话,那么每次都需要动态连接,是很浪费时间的;
而且,我觉的为了这样的目的而动态建库是不和算;
首先創建一個DLL,包含如下Function
function DoTest(H: THandle):TADOConnection;
var AdoConnection1:TAdoConnection;
begin
Application.Handle :=H;
with TFrmStart.Create(Application) do
begin
AdoConnection1.ConnectionString:='....';
AdoConnection1.Connected:=true;
DoTest:=ADOConnection1.Create(Application);
end;
end;然後在我的主Form調用DLL
...
implementation
function DoTest(H: THandle):TADOConnection cdecl; external 'MyDLL.DLL';procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1.Connection:=DoTest(Application.Handle);
adoquery1.Active:=true;
end;
NO.1: 但我的每一個Form都要Compile成獨立的Exe File,它們並不是在同一個Project裡的。//你这句话是错的,在同一个工程里边,只有一个.exe;
每一个form是compile,但是,他们最终到只生成一个.exe文件,这个.exe文件里,包含了所有了的本工程里的form,所以,你不用担心这一点:)
//是应该好好看一看书的; NO.2: 用共享接口,其它的程序或是form就可以调用这个dll了;
No.1 我的每個Project都隻有一個Form,分別由不同的人完成,(但我的每一個Form都要Compile成獨立的Exe File,它們並不是在同一個Project裡的)