在一个单元文件里面。我看到了两个名字相同的过程声明,一个是写在public里面,另一个是写在var里面。请问,这两个位置声明有何区别,特别是声明在var里面的过程。麻烦前辈大哥解释一下。谢谢~var
   ComData: TComData;
   procedure changesql(const SqlStr:String;Dataset:TCustomADODataSet);
   procedure execsql(Sql: WideString);
   procedure get_Look(look_type: string);
   function  get_lookUp(const aText, lookup_type: string): boolean;
   function  get_lookUp_exit(sender: TWinControl; const aText, lookup_type: string): boolean;
   function  DblClick_help(filterStr: string;
     aDocFlag: integer; aDefaultSql: string = ''): boolean;
   function  Exit_help(sender: TWinControl; filterStr: string;
     aDocFlag: integer; aDefaultSql: string = ''): boolean;
   procedure Get_subinv1(sender: TCustomComboBox);  
   procedure Get_subinv;  
   function  get_Servertime: TdateTime;
   function  has_on_hand(item_id: integer; subinv, uom: string): boolean;

解决方案 »

  1.   

    var是局部的,只能本过程调用,其它不能,public,其它地方也可调用
      

  2.   

    哪里有声明在var里面了啊?写在public里面的是类的成员函数
    写在外面的就是一般的函数
      

  3.   


    是,我就是不理解声明在var里面的他是什么意思?
      

  4.   

    您的意思是说他和声明在私有区域内的意思是一样的吗?注:这里的声明不是在过程里面var。是在单元文件里面在implementation  上面全局变量的var
      

  5.   

    是我理解错了,理解成过程中的var了
      

  6.   

    是这样的,其中还有两个名字是一样的。    procedure CSKClientRead(Sender: TObject; Socket: TCustomWinSocket);
      private
        { Private declarations }
        procedure SetConnectd(source:string);
      public    { Public declarations }
        AccountList: TStringList;
        Procedure SendCloseMsg;
        procedure SetBmp(Flag:integer;FileName:String;dataset:TADODataSet);
        procedure saveBmp(FileName:String;dataset:TADODataSet);
        procedure DeleteBmp(FileName:String);
        procedure LoadBmp(FileName:String;dataset:TADODataSet);
        function  CheckServer: boolean;
        procedure ResultData(const SqlStr:String;Dataset:TCustomADODataSet);
        procedure changesql(const SqlStr:String;Dataset:TCustomADODataSet);
        procedure ShowMessageing(MsgStr:String; TitleStr:String);
        procedure checktime(sender2, sender1: TObject);
        function  SubDateTime(DateTime1,DateTime2:string):double;
        function  IsSunday(DateTime1:TDateTime):boolean;
        function  IniAword(Aword:char):char;
        procedure ChoDatetime(sender:Tobject);
        Function  JMString(const Caption:String):String;
        procedure GetAccount;
        procedure Set_System;
      end;var
       ComData: TComData;
       procedure changesql(const SqlStr:String;Dataset:TCustomADODataSet);
       procedure execsql(Sql: WideString);
       procedure get_Look(look_type: string);
       function  get_lookUp(const aText, lookup_type: string): boolean;
       function  get_lookUp_exit(sender: TWinControl; const aText, lookup_type: string): boolean;
       function  DblClick_help(filterStr: string;
         aDocFlag: integer; aDefaultSql: string = ''): boolean;
       function  Exit_help(sender: TWinControl; filterStr: string;
         aDocFlag: integer; aDefaultSql: string = ''): boolean;
       function  get_Servertime: TdateTime;
       function  has_on_hand(item_id: integer; subinv, uom: string): boolean;
       function  update_on_hand(item_id: integer; subinv, uom: string
         ;quantity: double): string;
       function  insert_on_hand(item_id: integer; subinv, uom: string
         ;quantity: double): string;
    implementation
      

  7.   

    public中是成员函数,其它地方需要通过实例去访问,var下的,可以直接访问
      

  8.   

    楼主!
      var 只说明 ComData: TComData 是变量,
    public 中的 procedure changesql(const SqlStr:String;Dataset:TCustomADODataSet);
       是一个类的特性(功能)实现
    而后面的    procedure changesql(const SqlStr:String;Dataset:TCustomADODataSet);只是一个在该单元中可以使用的过程,
       对public中的changesql使用应是这样  xxxx.changesql(SqlStr , Dataset) ;xxxx是类名称
       对后面的changesql使用应是这样  changesql(SqlStr , Dataset) ;
      

  9.   

    两个名字一样。这样的话不会出错么?后边也没有用overload关键字?
      

  10.   


    unit1中
      public
        { Public declarations }
        procedure showoknew;
      end;
    var
      Form1: TForm1;
      procedure showok;unit2中,引用unit1
    可以直接访问showok,但是必须通过from1.showoknew来访问showoknew
      

  11.   

    var有两个地方,在implementation前的VAR,其它的VAR
    前者为全局,后者为局部
      

  12.   

    interface里的都是全局的,只是LZ的第一个是某类的一个方法,第二个是整个单元的