定义一个记录,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;为何,朋友帮忙找找原因!
sLen : Integer; //Length(Byte)
...
end;然后传递该记录类型的一个动态数组记录function TCOMM.DataItemInit(sFmtStr:AnsiString;var sDataItem : Array of DataItem) : Integer;
var
...
begin
SetLength(sDataItem ,333);//编辑报错,Incompatible typeend;为何,朋友帮忙找找原因!
解决方案 »
- 剛用Delphi,問個SQL語句在Delphi的寫法問題,謝謝前輩們先!
- 怎样获取ADSL的帐号
- 自定义中文版打印和预览窗口的制定。
- 请问 C的定义“WORD offset:12;”怎么转换成delphi的?
- 各位大哥,请告诉我一些支持ASP和Sql Server2000的网站空间,收费的
- 寻兼职(无锡)UP有分
- 执行存储过程报错:"Indicator variable required but not supplied",why?
- 怎么样才能屏蔽窗体的关闭键?
- 一个简单但是我没有搞懂的问题
- 关于LISTVIEW控件中数据的定位问题!!!!(奇怪的现象,只有在vsReport下,才管用。其他的模式就不行了,为什么?请高手指教!!)
- 我想做象QQ那样的,一个头像一个标签的列表。初步决定用ListView做。但是如何作到一行不管多宽都只显示一个图标和一个标签。
- 超级简单的问题!!XMLDocument加载一次以后如何清空?
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"!