1 在interface后面Uses 和在implementation后面Uses 有什么不同?
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,Forms, Dialogs;
type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;implementationUses
  Unit2;               //在这引用和在前面有什么不同?在前面不能连环引用,在
这却行.
{$R *.dfm}end.2.我要在2个Form中传递数据,互相调用函数,应该怎么做?
  我是通过在 Unit1 中引用 Unit2,又在Unit2中引用 Unit1做到的,这样是不是正解?3.Delphi中的全局变量和函数应该在哪里声明?4.Project1.dpr文件有什么用?在这里能干点什么?
program Project1;uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};{$R *.res}begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
  
问题很菜,大家不要笑我.

解决方案 »

  1.   

    1#是引用的系统单元和你自己的单元的区别
    2、用法就是这样的
    3、在public
        { Public declarations }
    这儿声明
    4、可在这里选择多个窗体的创建顺序,以及用布幕表单等。
    我也是初学,以上是我的理解,如有不对,请高手指教。
      

  2.   

    看来你的答案错了3个.1.系统单元和自己的单元都可以在这2个地方引用.我试过了.
    2.我一直这样用,但总觉得不对.如果2个Unit都需要用到的话,应该在第3个Unit声明.但我不知道循环引用有什么坏处,而且不知道怎么在第3个Unit声明 类的方法.
    3.那个地方是类的方法和属性声明的地方.
      

  3.   

    1.有些单元是不分在那里引用的,两个地方都可以用的,但是有些单元就不可以的
    2.你新建一个unit3然后在里面写入你的变量,然后在unit1和unit2的单元中引用unit3
    3.就是在public里面声明,当然你也可以在implementation前面的var中声明
    4.delphi的dpr文件是工程文件,按我的理解就是主程序,将每一个单元创建出来,开始运行
      

  4.   

    interface后面Uses是声明全局的引用,在implementation后面Uses是局部引用;具体关系自己可以试试,比如在form2中用到form1中的eidt值,要在form2中的interface->use中加入uint1,而form1中的button要显示form2,则要在form1->implementation->uses unit2,
      

  5.   

    对于第2点,比方说如果我有2个from,form1有2个button,一个edit,按button1则显示form2,按button2则把edit的内容显示为form1的标题,这样就需要引用unit2来显示form2。在form2中也有个按钮和一个文本框,按按钮则把文本框的内容赋给form1的Edit.这样又要引用unit1来取得edit,就造成了循环引用。该如何解决?对于第一点循环引用的只能在后面声明,或一个在前一个在后,其他的我试了好多,没发现哪个不行啊。难道Delphi就为了能够循环引用才分2个地方声明?我想这完全不必要,肯定还有别的原因。
      

  6.   

    to crystal1024(crystal) 
    这样就是循环引用了啊,你引用我,我引用你,好象逻辑上说不通,不知道会不会有潜在的问题。
      

  7.   

    1.系统单元和自定义单元的区别
    2.同意
    3.Public下可以申明
      

  8.   

    >interface后面Uses是声明全局的引用,在implementation后面Uses是局部引用;那能不能这样理解,Unit1引用过的系统单元,在Unit2中只要引用了Unit1,就不用再重复引用系统的单元了?
    我现在在家,没装Delphi,没法试。
      

  9.   

    1。作用域不一样,interface声明的变量可以被其他单元或者程序其他部分访问;implementation部分只能被本单元局部访问,也可以在这部分增加一个uses语句访问其他单元2。相互调用原则上不是设计上的缺陷,如果的确需要用到单元循环引用,可以把一个uses语句留在interface部分,一个移到implementation中3。全局变量全局函数一般都定义于interface和implementation之间4。该文件是工程文件由系统自动建立,用户一般不需要改动,他描叙整个程序的结构几启动代码。通常这是程序的入口。第一个语句用于初始化Application对象,他提供适用于整个程序的数据和代码;第二个语句在内存中创建应用程序的窗体对象,第三个语句为运行应用程序
      

  10.   

    总结如下:
    1。作用域不一样,interface声明的变量可以被其他单元或者程序其他部分访问;implementation部分只能被本单元局部访问,也可以在这部分增加一个uses语句访问其他单元,在哪里引用单元几乎是一样的(除非碰到第2点的情况).2。相互调用原则上不是设计上的缺陷,如果的确需要用到单元循环引用,可以把一个uses语句留在interface部分,一个移到implementation中.为了程序的可读性和移植性,不建议这样做.3.全局变量全局函数一般都定义于interface和implementation之间,不能定义在
    public
        { Public declarations }
    end;
    那样要通过类的实例来访问变量,应该定义在implementation前面的var下面.4。该文件是工程文件由系统自动建立,用户一般不需要改动,除非要执行程序初始化例程、显示启动画面或执行其他必须在程序启动时运行的例程。他描叙整个程序的结构及启动代码。通常这是程序的入口。第一个语句用于初始化Application对象,他提供适用于整个程序的数据和代码;第二个语句在内存中创建应用程序的窗体对象,第三个语句为运行应用程序