在以前的Delphi版本中(我们使用Delphi 2009),TFloatRec记录(在floatToDecimal中使用)被定义为
TFloatRec = packed record
Exponent: Smallint;
Negative: Boolean;
Digits: array[0..20] of AnsiChar;
end;
然而在Delphi XE5中(我认为这可能在XE3中有所改变),它被定义为..
TFloatRec = packed record
Exponent: Smallint;
Negative: Boolean;
Digits: array[0..20] of Byte;
end;
我们使用此记录将扩展字段转换为RawByteString,任何人都可以建议我可以将调用结果转换为FloatToDecimal
到RawByteString。
上下文
在从网络通信中读取缓冲区时调用此方法,因此需要尽可能快,不需要转换代码页等。
答案 0 :(得分:4)
您可以重新声明D2009记录供您自己使用:
type
TMyFloatRec = packed record
Exponent: Smallint;
Negative: Boolean;
Digits: array[0..20] of AnsiChar;
end;
切换现有代码以使用此记录,一切顺利。
虽然它可能很容易做到你使用新版TFloatRec
做的任何事情。毕竟Byte
和AnsiChar
的大小相同,您可以轻松地在一个和另一个之间进行投射。