我正在编写一个包装器用于与外部二进制 API 进行通信。 API 使用 PDU(打包二进制记录)进行通信。字符串是 AnsiChar 数组并且以零结尾:
type
TSomePDU = packed record
//...
StringField: array[0..XYZ] of AnsiChar;
//...
end;
PSomePDU = ^TSomePDU;
我想编写一个 FillPDUString 过程,它接受一个 String 并填充 char 数组,但我想避免在使用该过程的任何地方跟踪 MaxLength,因此我需要以某种方式获取声明的数组大小(给定指向该字段的指针):
function GetMaxSize(const Field: array of AnsiChar): Integer;
begin
// ???
end;
//...
GetMaxSize(ARecord.StringField);
这可能吗?
如果我理解正确的话,那么你可以使用Delphi的Length http://www.delphibasics.co.uk/RTL.asp?Name=Length功能
获取长度的方法如下:
function GetMaxSize(const Value: PSomePDU): Integer;
begin
Result := Length(Value.StringField);
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)