结构体如下:
TMsgHead = record
MessageTransportChannel: array[0..260] of Char;
MessageRelationKeyValue: array[0..260] of Char;
MessageInputType: array[0..260] of Char;
MessageSchemaID: array[0..260] of Char;
MessageDestSet: array of TDest;
end;TDest = record
ServerExact: array[0..260] of Char;
ServerType: array[0..260] of Char;
ServerValue: array[0..260] of Char;
end;程序中此结构体的实例msgHead是作为参数传递过来的,我用High(msgHead.MessageDestSet)取数组的长度,得到的值是-33686020。
请大家帮帮忙告诉我为什么及怎么做,谢谢了。
TMsgHead = record
MessageTransportChannel: array[0..260] of Char;
MessageRelationKeyValue: array[0..260] of Char;
MessageInputType: array[0..260] of Char;
MessageSchemaID: array[0..260] of Char;
MessageDestSet: array of TDest;
end;TDest = record
ServerExact: array[0..260] of Char;
ServerType: array[0..260] of Char;
ServerValue: array[0..260] of Char;
end;程序中此结构体的实例msgHead是作为参数传递过来的,我用High(msgHead.MessageDestSet)取数组的长度,得到的值是-33686020。
请大家帮帮忙告诉我为什么及怎么做,谢谢了。
High函数并不是返回数组的长度,而是返回你的参数所属变量类型的最大值。
SetLength(MsgHead.MessageDestSet, 13);
取长度用Length
是变长数组,只留了一个指针
把长度传过去。
TMsgHead 中加一个变量,值为动态数组的长度。