两个pas文件A.pas,B.pas,里面是分别是一些class的声明和实现,如果我在
A.pas的最上面Uses了B.pas,然后又在B.pas的最上面Uses了A.pas,那再编译
时就会告诉我有循环的引用。原因是A.pas和B.pas中声明的类要互相使用两个
单元中的类。为什么要有这种限制呢??如何解决这个问题,我现在的A.pas文件已经很大了
如果把B.pas的内容放进去会更大,行数太多不易管理。如果解决这个问题呢???

解决方案 »

  1.   

    在implementation部分引用就可以了,在interface引用,是全局可见的于是就会出现下面的情况:a-->b-->a--b.....没完没了了  (--->代表引用关系)
      

  2.   

    使用公共的C.PAS保存要用的部分
    使用一个PAS也没有什么问题的,我最大的PAS有30K行
    在implementation部分引用也是可以的
      

  3.   

    谢谢,FrameSniper(§恋爱的味道是甜的§) 
    我看我是不是得补补‘编译知识’了 ^_^
      

  4.   

    另外我这几个单元中全是类的声明和实现,如果用下面implementation的uses
    那就不能使用了。看来解决办法只有合并一个单元中了。
      

  5.   

    在implementation里也是允许类的声明的,当然也包括实现,只是这样,这个类就是这个单元私有的了,如下:
    implementation{$R *.dfm}
    type
     Tmyclass=class
      public
       procedure show;
     end;
    { myclass }procedure Tmyclass.show;
    begin
     showmessage('ok');
    end;
      

  6.   

    在implementation部分引用就可以了
      

  7.   

    在UNITA单元中,把uses UnitB放到implementation部分,在UnitB单元中,把uses UnitA放在interface部分。
      

  8.   

    其实我的目的就是 那个类不能是单元私有的,要能给别的单元用。
    所以放到implementation部分一定是不能达到目的了。net_morning(矿泉水) 的办法到还没试过,好像不错。
      

  9.   

    我倒是听说生成第三个UNIT,然后都使用第三个UNIT比较好。