不同unit之间的数据如何调用啊比如我unit1中求得一个值a
在unit2中求得一个值b
而在unit3中我想得到a+b的平均值如何调用啊多谢

解决方案 »

  1.   

    在 public 里面声明数据类型啊!unit1 type record
      a: integer;unit2
    type record
      b: integer;
      

  2.   

    unit3implementation
     uses unit1, unit2;
    就可直接使用
    比如我unit1中求得一个值a
    在unit2中求得一个值b
      

  3.   

    补充一下:
    如果两个单元要循环引用的话那么两个单元的use语句要分别放在interface区和implementation,不然会出错。
    还有,如果你要在interface区用到所引用单元的数据,那么要放在interface区的use语句里,一般情况是放在implementation区。
      

  4.   

    如果两个单元要循环引用的话那么两个单元的use语句要分别放在interface区和implementation,不然会出错。好像循环引用只要implementation就可以了吧,不必interface区和implementation都放吧
      

  5.   

    在Unit1单元的
    在窗口类的public部份声明。
    Unit2同Unit1.这样,在Unit3中的Implementation部份加入语句Use Unit2,unit1;应该就可以了吧。你试试,我想是这样的。
      

  6.   

    在1。2的public分别声明变量,然后在3中user进来就可以了!当然你的1 2如果有相互user那样的话,把一个放在interface 中一个放在implementation中经避免循环
      

  7.   

    比如我unit1中求得一个值a
    在unit2中求得一个值b
    而在unit3中我想得到a+b的平均值
    ====给你完整的吧,之前先说明,楼上的“星星球”解释的最为完整,希望楼主看看====
    1.unit unit1;
    ...//...表示中间的东东不需理会,请找到下面的代码的开始处,继续
    private
      a : Integer;
    ...//unit1到此ok,记住,最好不要用“全局变量”而是设为私有变量
    2.unit unit2;
    ...
    private
      b : Integer;
    ...
    3.unit unit3;
    ...
    implementation
    uses unit1, unit2;//这就是你要的了,然后尽情使用吧,使用的语法如下:
    c := (Form1.a + Form2.b) / 2;
      

  8.   

    对creativepeter(头皮屑)所讲的有点错误,我想更正一下,就是a 和b不能定义在private里面,因为私有,对其他unit就不能访问了,要把a 和b定义在public才行.(关于这一点已经经过我验证过了).
       我还有一种方法可以达到数据之间调用.
       如果对于多个公共变量要共用,可以另外加以一个unit作为公共单元,如果其他单元要用,就uses 这个公共单元,就可以达到unit之间的数据调用了.
      

  9.   

    uses就可以了...但要注意还有这种情况
    unit1,unit2相互需要引用
    不能同时在两个单元的interface部分uses
      

  10.   

    To→lionlsl(林),谢谢指正,确实如此。
      

  11.   

    to juliens(星星球) 
      两个互相引用的单元的uses语句是可以同时放在implementation区的,我的就都放在implementation区,没有问题。
      

  12.   

    第一种方法:
    implementationuses Unit2;{$R *.dfm}
    implementation{$R *.dfm}
    uses unit1;
    第二种方法:
    interface
    uses Unit2;{$R *.dfm}
    implementation{$R *.dfm}
    uses unit1;
    供参考。