Delphi XE5和TFloatRec以及System.floatToDecimal

时间:2013-09-30 20:02:04

标签: delphi delphi-xe5

在以前的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。

上下文

在从网络通信中读取缓冲区时调用此方法,因此需要尽可能快,不需要转换代码页等。

1 个答案:

答案 0 :(得分:4)

您可以重新声明D2009记录供您自己使用:

type
  TMyFloatRec = packed record
    Exponent: Smallint;
    Negative: Boolean;
    Digits: array[0..20] of AnsiChar;
  end;

切换现有代码以使用此记录,一切顺利。

虽然它可能很容易做到你使用新版TFloatRec做的任何事情。毕竟ByteAnsiChar的大小相同,您可以轻松地在一个和另一个之间进行投射。