System.TSingleRec
Delphi
TSingleRec = packed record
C++
struct DECLSPEC_DRECORD TSingleRec
{
private:
float aSingle;
UInt8 __fastcall InternalGetBytes(unsigned Index);
UInt16 __fastcall InternalGetWords(unsigned Index);
void __fastcall InternalSetBytes(unsigned Index, const UInt8 Value);
void __fastcall InternalSetWords(unsigned Index, const UInt16 Value);
UInt8 __fastcall GetBytes(unsigned Index);
UInt16 __fastcall GetWords(unsigned Index);
void __fastcall SetBytes(unsigned Index, const UInt8 Value);
void __fastcall SetWords(unsigned Index, const UInt16 Value);
unsigned __int64 __fastcall GetExp();
unsigned __int64 __fastcall GetFrac();
bool __fastcall GetSign();
void __fastcall SetExp(unsigned __int64 NewExp);
void __fastcall SetFrac(unsigned __int64 NewFrac);
void __fastcall SetSign(bool NewSign);
public:
int __fastcall Exponent();
Extended __fastcall Fraction();
unsigned __int64 __fastcall Mantissa();
__property bool Sign = {read=GetSign, write=SetSign};
__property unsigned __int64 Exp = {read=GetExp, write=SetExp};
__property unsigned __int64 Frac = {read=GetFrac, write=SetFrac};
TFloatSpecial __fastcall SpecialType();
void __fastcall BuildUp(const bool SignFlag, const unsigned __int64 Mantissa, const int Exponent);
static TSingleRec __fastcall _op_Explicit(Extended a);
__property UInt8 Bytes[unsigned Index] = {read=GetBytes, write=SetBytes};
__property UInt16 Words[unsigned Index] = {read=GetWords, write=SetWords};
};
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
record struct |
public | System.pas System.hpp |
System | System |
説明
警告: TSingleRec は非推奨になっています。 SysUtils.TSingleHelper を使用してください。
TSingleRec では、単精度浮動小数点値に対して低レベル操作を実行できます。
XE3 では、Bytes プロパティと Words プロパティは配列プロパティになりました。High 関数と Low 関数は配列プロパティには適用されません。以下の例に示すように、System.SizeOf を代わりに使用できます。
例
この例の XE2 版では、以下のように、TSingleRec を 1 バイトずつ反復処理するのに System.High と System.Low が使用されていました。
for I := High(F.Bytes) downto Low(F.Bytes) do
XE3 版の例では、以下のように、High と Low の代わりに System.SizeOf が使用されています。
var
F: TSingleRec;
I: Integer;
begin
F := TSingleRec(-0.5);
// display the hexadecimal representation of the single precision floating-point value
// leftmost bytes are the most significant
for I := sizeof(F) - 1 downto 0 do
Write(IntToHex(F.Bytes[I], 2) + ' ');
Writeln;
// display the value contained in the TSingleRec record
Writeln(FloatToStr(Single(F)));
// ...
コンソール出力は以下のようになります。
BF 00 00 00 -0.5