0

以前のバージョンの 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;

FloatToDecimalこのレコードを使用して、拡張フィールドを RawByteString に変換します。呼び出しの結果を RawByteStringに変換するために私ができることを誰か提案できますか?

環境

このメソッドは、ネットワーク通信からバッファを読み取り中に呼び出されるため、コードページなどを変換せずに、できるだけ高速である必要があります。

4

1 に答える 1

4

D2009 レコードを自分で使用するために再宣言するだけです。

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

このレコードを使用するように既存のコードを切り替えれば、すべてうまくいきます。

また、新しいバージョンのTFloatRec. やはり aByteと anAnsiCharは同じサイズなので、一方と他方の間で簡単にキャストできます。

于 2013-09-30T20:10:03.000 に答える