Delphi XE5 and TFloatRec and System.floatToDecimal



在以前的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做任何事情也很容易。毕竟,ByteAnsiChar的大小相同,您可以轻松地在两者之间投射。

相关内容

  • 没有找到相关文章

最新更新