首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

uses 一些基本概念解决方法

2012-04-21 
uses 一些基本概念uses 在interface,implementation 后边都有,区别是什么?interface,implementation 这些

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
是引用“单元全局变量”(希望定义的变量仅在本单元访问)所在单元的
[解决办法]
探讨
interface
下的uses
是引用系统“单元”的
implementation
下的uses
是引用用户定义的“单元”的

[解决办法]
但如出现21Ls11ss所说的情况时,用户定义的单元也应放入interface区域。一般的单元我是习惯尽量放在implementation区

热点排行