如何定义全局变量?在各个模块中又如何引用啊???

解决方案 »

  1.   

    unit PubCode;interface
    uses
      Windows, Forms, SysUtils, Controls, DB, ADODB, Dialogs, Classes, ShellAPI,
      WinSock, Registry, ShlObj, ActiveX, Sockets, ComObj, QuickRpt, Qrctrls;
    var
      FieldName:string;其中﹕filename就是一個全局變量了。
      

  2.   

    需要这个变量的单元,在uses引用中加上pubcode
      

  3.   

    private
       //私有的,本单元的变量定义 
    { Private declarations }
      public
    //公用的变量定义的地方,也可以定义“过程”,函数等
        sjk   : String; {数据库名称}
        { Public declarations }
      end;var
      Form1: TForm1;
      

  4.   

    全局变量有很多中类型。比如可以有整个工程的全局变量,还可以有一个类中的全局变量,一个单元中的全局变量。如果是定义只在一个单元中使用的全局变量就应该写在这个单元的“implementation”后面。如果这个变量能够为其他单元访问,就应该定义在“implementation”前面,然后其他单元来uses这个单元。如果是一个类的全局变量,就比较复杂了,这要根据类成员访问范围标识来判断这个变量对其他得类是否可见,如何可见等。
      

  5.   

    可以在主窗体的代码的public处定义变量如:user;string;如果主窗体是form1,则其他模块引用时,只需写 form1.user  即可,比较简单的
      

  6.   

    正常的方法是在一个公共单元中Public或Global中定义,其它单元引用公共单元就可以了,这个修改方便,另外公共单元也可以放自己定义的函数等。
      

  7.   

    完了,一点戏都没有了。
    我来总结哈哈:
    一个unit可以分为几个部分:
    unit XXX;   //这里是单元名称的说明部分;
    interface      //这里是单元对外的接口部分,在这里声明的函数,变量,类等都可以被其它引用
    uses      //这个单元的其它单元使用。当然类中的变量有其它的保护措施。
    type
    .
    .
    end;
    var
    .
    .
    implemention  //这里是类和函数的完成部分,这里定义的变量其它单元是看不到的,哈哈。
    uses 
    type
    var
    ...
    end;
    end.
    注意有两个uese 哦,是有一点区别的:在前一个uses中引用的单元对其它引用本单元的单元来说也是可见的,而在后一个uses中引用的单元对引用本单元的单元来说是不可见的。举例来说吧:
    有unit A  unit B unit C
    A在interface中引用B,C;  B在interface中引用A,C这种引用的方法就会出错,因为进行了循环的引用。解决的方法是:把其中某一个引用放到implemention中去。