请教一下,下面两段代码在实现的时候,到底有什么不同。
我不知道第二个文件中,有关dll的释放到底有没有效。
请各位高手解释一下两者的不同,特别是调用和释放的情况。//////////////////////////////////
library TB_ZZS;uses
SysUtils,
Classes,
Windows,
Forms,
ExtCtrls,
U_TB_ZZS in 'U_TB_ZZS.pas' {F_TB_ZZS};{$R *.res}function ShowF(App: TApplication): byte; stdcall;
begin
if not Assigned(Form1) then //
Form1:= TForm1.Create(Application);
Form1.show;
Result := 0;
end;exports
ShowF;begin
end./////////////////////////////////////////////////////////////////////
library BB_ZZS1;uses
SysUtils,
Classes,
Windows,
Forms,
u_bb_zzs1 in 'u_bb_zzs1.pas' {F_BB_zzs1};{$R *.res}var
DLLApp: TApplication;function ShowF(App: TApplication): Byte; stdcall;
begin
Application := App; if not Assigned(Form1) then
Form1:= TForm1.Create(Application);
Form1.Show;
Result := 0;
end;procedure DLLUnloadProc(Reason: Integer);
begin
if Reason = DLL_PROCESS_DETACH then begin
Application := DLLApp; //恢复
end;
end;exports
ShowF;begin
DLLApp := Application; //保存 DLL 中初始的 Application 对象
DLLProc := @DLLUnloadProc; //保证 DLL 卸载时恢复原来的 Application
end.
/////////////////////////////////////////////////////
我不知道第二个文件中,有关dll的释放到底有没有效。
请各位高手解释一下两者的不同,特别是调用和释放的情况。//////////////////////////////////
library TB_ZZS;uses
SysUtils,
Classes,
Windows,
Forms,
ExtCtrls,
U_TB_ZZS in 'U_TB_ZZS.pas' {F_TB_ZZS};{$R *.res}function ShowF(App: TApplication): byte; stdcall;
begin
if not Assigned(Form1) then //
Form1:= TForm1.Create(Application);
Form1.show;
Result := 0;
end;exports
ShowF;begin
end./////////////////////////////////////////////////////////////////////
library BB_ZZS1;uses
SysUtils,
Classes,
Windows,
Forms,
u_bb_zzs1 in 'u_bb_zzs1.pas' {F_BB_zzs1};{$R *.res}var
DLLApp: TApplication;function ShowF(App: TApplication): Byte; stdcall;
begin
Application := App; if not Assigned(Form1) then
Form1:= TForm1.Create(Application);
Form1.Show;
Result := 0;
end;procedure DLLUnloadProc(Reason: Integer);
begin
if Reason = DLL_PROCESS_DETACH then begin
Application := DLLApp; //恢复
end;
end;exports
ShowF;begin
DLLApp := Application; //保存 DLL 中初始的 Application 对象
DLLProc := @DLLUnloadProc; //保证 DLL 卸载时恢复原来的 Application
end.
/////////////////////////////////////////////////////
解决方案 »
- SendMessage 不能取TDxDraw类型的输入框的值?
- 单击form2中的一个按钮,显示form1窗体的代码怎么写?
- 请推荐网络编程的入门书籍,谢了.
- 我想在窗口上画一个会动的方框蚂蚁线,请问如何做呢?
- 请问怎样让TryStrToDatetime('1999年1月1日',D)返回True?
- 为什么我的delphi6打开某一个文件.pas就会自动关闭?
- 如何在Form中放四个panel,且四个panel的大小一致,四个panel要占满整个form
- 我想去北京工作大家看看我值多少钱
- 谁能替我解决下面的问题?
- 怎样将Olecontainer中的word文章转入WORDserver组件中?
- ShellTreeView的问题,高分求解
- 先进先出法的示例
我不知道第二个文件中,有关dll的释放到底有没有效。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
没有不同
建立的窗体没有及时释放
但是会随着Application的Terminate而释放~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我也不懂
瞎说得
^_^