定义一个记录,type DataItem = record             //Parsed and return data item,use temporarily,
  sLen : Integer;                  //Length(Byte)
...
end;然后传递该记录类型的一个动态数组记录function TCOMM.DataItemInit(sFmtStr:AnsiString;var sDataItem : Array of DataItem) : Integer;
var
...
begin
SetLength(sDataItem ,333);//编辑报错,Incompatible typeend;为何,朋友帮忙找找原因!

解决方案 »

  1.   

    该为out传递也是同样错误提示
      

  2.   

    type DataItem = record             //Parsed and return data item,use temporarily,
      sLen : Integer;                  //Length(Byte)
    ...
    end;type
      TMyDataItem = Array of DataItem;
    然后传递该记录类型的一个动态数组记录function TCOMM.DataItemInit(sFmtStr:AnsiString;var sDataItem : TMyDataItem) : Integer;
    var
    ...
    begin
    SetLength(sDataItem ,333);//编辑报错,Incompatible typeend;试试,应该可以.
    原因:
    1.在Delphi中,函数和过程的开放式数组参数申明与
    动态数组申明相同,都是Array of XXXXX,在过程申明中的Array of XXXX被视为开放式数组,在
    变量申明中的Array of XXXX被视为动态数组,所以要加上一个新类型来说明.
    2.开放式数组本身是为方便在过程中处理不定长度的固定数组而设立的,它本身是固定数组,
    所以提示:"Incompatible types"!