我正在编写与外部二进制API通信的包装器。该API使用PDU(打包的二进制记录)进行通信。字符串是AnsiChar数组,并以零结尾:
type
TSomePDU = packed record
//...
StringField: array[0..XYZ] of AnsiChar;
//...
end;
PSomePDU = ^TSomePDU;
我想编写一个 FillPDUString 程序,它将接受一个字符串并填充字符数组,但我想避免在使用该程序时跟踪 MaxLength,因此我需要以某种方式获取给定字段指针的声明数组大小。
function GetMaxSize(const Field: array of AnsiChar): Integer;
begin
// ???
end;
//...
GetMaxSize(ARecord.StringField);
这是可能的吗?
function GetMaxSize(const Field: array of AnsiChar)
而且主体部分应该是Result=Length(Field);
,因为目的是找到任何任意字段的最大长度,给予 field 指针,因此有const Field: array of AnsiChar
. - Boris B.