我在两个单元中定义了数组:
TVisArray=array[0..4] of real;但是,在以上述的数组为参数在不同的单元之间传递参数的时候为什么提示:
[Error] UnitMain.pas(982): Incompatible types: 'UnitCalculate.TVisArray' and 'UnitMain.TVisArray'???
谢谢!

解决方案 »

  1.   

    不能相容的array type.所以你var的type要和db里的type要same.
    sorry,my systematic don't support simplified(Chinese) character.
    I hope you can understand.
      

  2.   

    jakefj(夢幻天使) :
    可是,很明显的我是同样的定义语句呀:
    如下:
    unit UnitMain;interfaceuses
      .........type
      TVisArray=array[0..4] of real;
      TFinalRec=record
        SeriesNo:integer;
        CurrLen:Real;
        Kind:string[10]; //有两个可能:“管线”或者是“站名”
        Temp:real;
        Pressure:real;
        TNing:real;
        Vis:TVisArray;
        VisCeNian:TVisArray;
      end;  TMatrix=array of array of real;
      TSOilArray=array[0..4] of array[0..11] of real;
      TXiLaArray=array[0..1] of array of real;
    unit UnitCacaulate;interfaceuses
    ......., Math;type
      TMatrix=Array of array of real;
      TXiLaArray=array[0..1] of array of real;
      TVisArray=array[0..4] of real;
      TMyCalculate = class(TObject)他们的定义语句是同样的呀?为什么会不兼容呢?
      

  3.   

    //我在两个单元中定义了数组:
    //TVisArray=array[0..4] of real;
    不要在两个单元中都定义,你可以在一个单元中定义,然后在另一个单元引用这个类型。
      

  4.   

    fancier(OP&&(C/C++)) :
    那么,能否劳驾您给我具个例子呢?
    真的不好意思,我的Pascal语言实在太差劲。呵呵,看来我得加分揭贴了。
      

  5.   

    好象我以前的时候用的上面的TMatrix,类型就是在两个单元中定义的。但是却没有抱错。我真得有些糊涂了也!
      

  6.   

    比如说,在 unit UnitMain 单元中定义如下interfaceuses
      .........type
      TVisArray=array[0..4] of real;
      TMatrix=array of array of real;
      TSOilArray=array[0..4] of array[0..11] of real;
      TXiLaArray=array[0..1] of array of real;   TFinalRec=record
        SeriesNo:integer;
        CurrLen:Real;
        Kind:string[10]; //有两个可能:“管线”或者是“站名”
        Temp:real;
        Pressure:real;
        TNing:real;
        Vis:TVisArray;
        VisCeNian:TVisArray;
      end;然后在unit UnitCacaulate;单元中interfaceuses
    ......., Math, UnitMain;//引用前面的单元type
      //TMatrix=Array of array of real;   这些都不用,如果需要用的这些类型,可以直接
      //TXiLaArray=array[0..1] of array of real; 在需要的地方引用TMatrix等类型就行。
      //TVisArray=array[0..4] of real; 一般这些共用的类型的定义可以放在一个独立的单
    // 元里,然后由其它的单元引用。具体为什么?说不上,呵呵...
      TMyCalculate = class(TObject)
      

  7.   

    在mainForm中的调用:
    Fin:=MyCalcaulate.GetFin(Vel,Dia,Dens,CrrntRec.VisCeNian);  //在这里报错!//CrrntRec.VisCeNian是一个
    TFinalRec=record
        SeriesNo:integer;
        CurrLen:Real;
        Kind:string[10]; //有两个可能:“管线”或者是“站名”
        Temp:real;
        Pressure:real;
        TNing:real;
        Vis:TVisArray;
        VisCeNian:TVisArray;
      end;
    的记录;下面再来看看函数的定义:
    function TMyCalcaulate.GetFin(Vel,Dia,Dens:real;VisArray:TVisArray;CriticalNumber:real=2100):real;呵呵,可能还是没有讲的很清楚,不过你可以参考我上面贴的一部分关于这两个单元的比较详细的代码。
      

  8.   

    谢谢各位了。特别是fancier(OP&&(C/C++))!