unit Unit1;
//here
interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementationuses Unit2;
//here
{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
beginend;end.

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3872/3872604.xml?temp=4.896182E-02
    这个问题我也想知道.
      

  2.   

    第一个use继承固有类(可能有更好的说法)
    第二个use是此处需引用其他资源文件
      

  3.   

    楼上的意思时说:第一个引用系统固有的一些单元.
    在implementtion后面的是引用自己的单元.
    不知这是你自己的理解还是从哪里看来的.
    谢谢.
      

  4.   

    我发现
    uses Unit2;
    把Unit2放在前面的Uses中也可?
    怎么回事?
      

  5.   

    如果楼主用过C++的话,在上面USES就有点类似在头文件(.h)中#include,而在下面uses的话就类似在.cpp中#include一样。
    当在上面引用某单元的话,如果本单元被别的单元引用,则本单元引用的某单元一并被别的单元引用,这样容易造成重复引用,产生编译错误,最好的方式为在下面引用。有一点需注意:引用一定要在使用(即:声明了待引用的单元对象或使用了待引用的单元内容)前。
      

  6.   

    哦,楼上的解释看起来很有道理.
    系统的unit应该有一个机制,防止它被重复应用后重复定义.
    而我自己的unit没有这种机制.
    嗯,有道理.
      

  7.   

    上面的uses是定义的时候要用到的,下面的是实现部分需要的。
      

  8.   

    我认为到目前为止还是jason(jason)的说法最象.
      

  9.   

    嘿嘿,肯定是再UNIT2 的interface 的 USES  里面定义了UNIT1了,这样是为了防止循环引用,
    否则,程序会报错!!!
      

  10.   

    在上面引用的话,其他单元也可以访问到该单元引用的内容。
    而在下面引用的话,只有本单元可以访问到,对于其他单元不可见。
    例如:UNIT1
      interface
       uses myunit1;
      implementation
       uses myunit2
    假如有另一个单元UNIT2引用了UNIT1。则UNIT2也可以访问到MYUNIT1中的内容,而不用去再USES MYUNIT1。但是在UNIT1中的implementation中引用的MYUNIT2对于UNIT2是不可见的。
    也就是说一个单元在INTERFACE接口部分声明的东西对于其他单元来说是可见的,是公开的。而在IMPLEMENTATION部分声明的东西对于其他单元来说是不可见的,是私有的。
    这是OBJECT PASCAL中的解释,有兴趣可以看看这方面的书。
      

  11.   

    还有就是如果两个单元互相引用的话(例如UNIT1中引用了UNIT2,而UNIT2中又引用了UNIT1),不能把引用都写在INTERFACE接口部分。而要把其中一个的USES子句放到IMPLEMENTATION中去,这样做是为了防止循环引用。
      

  12.   

    看过上面几层楼的解释   现在了解了怎么去处理循环引用 
    还是觉得coffee36(咖啡) 好理解些
      

  13.   

    是不是调用OFFICE的时候,我也既可以写在interface中也可以写在implementation中咯!