uses 一些基本概念
uses 在interface,implementation 后边都有,区别是什么?
interface,implementation 这些结构是什么意思?
- Delphi(Pascal) code
unit Unit_Frm_Main;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, ComCtrls, Menus;type TFrm_Main = class(TForm) M_Menu: TMainMenu; N1: TMenuItem; MI_Role: TMenuItem; MI_Users: TMenuItem; N4: TMenuItem; MI_Help: TMenuItem; MI_Abort: TMenuItem; StatusBar1: TStatusBar; Image1: TImage; MI_Dept: TMenuItem; N2: TMenuItem; MI_WorkTime: TMenuItem; MI_DeptRelate: TMenuItem; MI_Appoint: TMenuItem; N3: TMenuItem; MI_MPassWord: TMenuItem; MI_Quit: TMenuItem; MI_Period: TMenuItem; MI_Conn: TMenuItem; N5: TMenuItem; Timer_Check: TTimer; MI_RoleRefresh: TMenuItem; N6: TMenuItem; N7: TMenuItem; MI_RP: TMenuItem; procedure MI_RoleClick(Sender: TObject); procedure MI_UsersClick(Sender: TObject); procedure MI_DeptClick(Sender: TObject); procedure MI_WorkTimeClick(Sender: TObject); procedure MI_DeptRelateClick(Sender: TObject); procedure MI_HelpClick(Sender: TObject); procedure MI_AppointClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure MI_AbortClick(Sender: TObject); procedure MI_MPassWordClick(Sender: TObject); procedure MI_QuitClick(Sender: TObject); procedure MI_PeriodClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure MI_ConnClick(Sender: TObject); procedure Timer_CheckTimer(Sender: TObject); procedure MI_RoleRefreshClick(Sender: TObject); procedure MI_RPClick(Sender: TObject); private { Private declarations } public { Public declarations } Procedure Set_MenuList; //ÉèÖò˵¥È¨ÏÞ end;var Frm_Main: TFrm_Main;implementationuses Unit_Public,Unit_FrmRole,Unit_FrmUsers,Unit_FrmDept, UnitFrmDeptPower, Unit_FrmShift,Unit_FrmTest, Unit_FrmAppoint, Unit_FrmErrLog,Unit_FrmMPassWord, Unit_FrmAbout, Unit_FrmPeriod,Unit_FrmConn,Unit_DM,Unit_ThreadConn,Unit_FrmRP;{$R *.dfm}[解决办法]
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, ComCtrls, Menus;
//系统级的
implementation
uses Unit_Public,Unit_FrmRole,Unit_FrmUsers,Unit_FrmDept,
UnitFrmDeptPower, Unit_FrmShift,Unit_FrmTest, Unit_FrmAppoint,
Unit_FrmErrLog,Unit_FrmMPassWord, Unit_FrmAbout, Unit_FrmPeriod,Unit_FrmConn,Unit_DM,Unit_ThreadConn,Unit_FrmRP;//只是下面代码部分要引用的单元,级别低些。
{$R *.dfm}
interface//接口声明
implementation //代码实现
[解决办法]
unit Unit3;
interface
uses Windows;//a
var
h: HWND;//如果没有a,此处不能编译通过,因为HWND的定义在Windows单元
implementation
//uses Windows;//b
var
h2: HWND;//如果既没有a,也没有b, 此处不能编译通过
end.
[解决办法]
楼主可以看看<Delphi 高手突破>,有更详细的描述。
发的代码貌似是权限设置的模块~~~~~
[解决办法]
uses Unit_Public,Unit_FrmRole,Unit_FrmUsers,Unit_FrmDept,
UnitFrmDeptPower, Unit_FrmShift,Unit_FrmTest, Unit_FrmAppoint,
Unit_FrmErrLog,Unit_FrmMPassWord, Unit_FrmAbout, Unit_FrmPeriod,Unit_FrmConn,Unit_DM,Unit_ThreadConn,Unit_FrmRP;
//写这程序的一定是怪叔叔啊,一个单元引用这么多单元。
[解决办法]
uses Unit_Public,Unit_FrmRole,Unit_FrmUsers,Unit_FrmDept, UnitFrmDeptPower, Unit_FrmShift,Unit_FrmTest, Unit_FrmAppoint, Unit_FrmErrLog,Unit_FrmMPassWord, Unit_FrmAbout, Unit_FrmPeriod,Unit_FrmConn,Unit_DM,Unit_ThreadConn,Unit_FrmRP;
吓到我了!
interface
uses
与
implementation
uses
作用域不同
implementation
uses 作用域仅在
implementation 以下的代码有用
以上效
为防止交叉引用 编译出错
[解决办法]
在印象中没多大区别,我一般都放上面,但有一点,UnitA 引用UnitB ,放在上面uses的话,当UnitB也要引用UnitA的时候,就必须放在下面的uses
[解决办法]
interface
下的uses
是引用系统“单元”的
implementation
下的uses
是引用用户定义的“单元”的
[解决办法]
[解决办法]
interface
下的uses
是引用“全局变量”(希望定义的变量在其它单元也可以访问)所在单元的
implementation
下的uses
是引用“单元全局变量”(希望定义的变量仅在本单元访问)所在单元的
[解决办法]
[解决办法]
但如出现21Ls11ss所说的情况时,用户定义的单元也应放入interface区域。一般的单元我是习惯尽量放在implementation区