在以前的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。
上下文
此方法是在从网络通信中读取缓冲区时调用的,因此它需要尽可能快,而无需转换代码页等。
您可以重新声明 D2009 记录以供自己使用:
type
TMyFloatRec = packed record
Exponent: Smallint;
Negative: Boolean;
Digits: array[0..20] of AnsiChar;
end;
切换现有代码以使用此记录,一切都会好起来的。
尽管使用新版本的TFloatRec
做任何事情也很容易。毕竟,Byte
和AnsiChar
的大小相同,您可以轻松地在两者之间投射。