现有3个单元,u1,u2,u3
u3中有一public变量v1
u2 uses u3
u1 uses u2
u1为什么就不能使用v1?
我就是不想让u1 uses u3
请问有什么办法?

解决方案 »

  1.   

    你还是u1 uses u3, 不要u1 uses u2 了,这样不好?
      

  2.   

    在u2中定义两个方法分别获取和设置v1:
    Get_v1
    Set_v1
      

  3.   

    如果象你说的那样:
    u2 uses u3
    u1 uses u2
    就允许u1就不能使用u3.v1,那么至少会给编译器带来比较大的负担,不展开说了。
    “我就是不想让u1 uses u3”,你这个想法没多大意思。将uses u3写在u1的实现部分。
      

  4.   

    我就是不想让u1 uses u3
    哈哈,有性格!u3:var vl:integer;u2:uses u3function getvl:integer; 
    begin
    result:=u3.vl;
    end; u1:uses u2;var i:integer;i:=u2.getvl;
      

  5.   

    为什么“我就是不想让u1 uses u3”?你的问题太怪
      

  6.   

    delphi不行吗?c里面好像可以哟
    能不能讲讲为什么不行?
      

  7.   

    结不了贴,就再问一下:
    lxpbuaa(桂枝香在故国晚秋) :如果像我说的那样,的确会给编译器带来很大的负担,的确不能那样,但应该有一种办法吧,c语言中好像是使用exteral "C" (c语言不熟,记不太清)可以将变量v1从u3中引入u2供其它引用u2的单元使用,这样u1不需引用u3就可以使用v1了
      

  8.   

    楼主:你这种想法就是sysu(死树)的做法;
    在u2中定义两个方法分别获取和设置v1:
    Get_v1
    Set_v1或者把它写成一个属性,如在u2的public下
    public
      ......
      property u3_v1: T read Get_v1 write Set_v1;
    然后通过u3_v1属性操作u3的v1变量。
      

  9.   

    fancier(OP&&C/C++) :多谢,多谢
      

  10.   

    fancier(OP&&C/C++) :贴都结了还这么关心,下次问问题一定多给你一些,不要也得要,哈哈~~~~~~~~~