2
0

syshelpf.inc 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. {%MainUnit sysutils.pp}
  2. Class Function TFLOATHELPER.IsNan(const AValue: FLOATTYPE): Boolean; overload; inline; static;
  3. begin
  4. Result:=TFloatRec(AValue).SpecialType=fsNan;
  5. end;
  6. Class Function TFLOATHELPER.IsInfinity(const AValue: FLOATTYPE): Boolean; overload; inline; static;
  7. begin
  8. Result:=TFloatRec(AValue).SpecialType in [fsInf,fsNinf];
  9. end;
  10. Class Function TFLOATHELPER.IsNegativeInfinity(const AValue: FLOATTYPE): Boolean; overload; inline; static;
  11. begin
  12. Result:=TFloatRec(AValue).SpecialType=fsNinf;
  13. end;
  14. Class Function TFLOATHELPER.IsPositiveInfinity(const AValue: FLOATTYPE): Boolean; overload; inline; static;
  15. begin
  16. Result:=TFloatRec(AValue).SpecialType=fsInf;
  17. end;
  18. Class Function TFLOATHELPER.Parse(const AString: string): FLOATTYPE; overload; inline; static;
  19. begin
  20. Result:=StrToFloat(AString,DefaultFormatSettings);
  21. end;
  22. Class Function TFLOATHELPER.Parse(const AString: string; const AFormatSettings: TFormatSettings): FLOATTYPE; overload; inline; static;
  23. begin
  24. Result:=StrToFloat(AString,AFormatSettings);
  25. end;
  26. Class Function TFLOATHELPER.Size: Integer; inline; static;
  27. begin
  28. Result:=SizeOf(FLOATTYPE);
  29. end;
  30. Class Function TFLOATHELPER.ToString(const AValue: FLOATTYPE): string; overload; inline; static;
  31. begin
  32. Result:=FloatToStr(AValue,DefaultFormatSettings);
  33. end;
  34. Class Function TFLOATHELPER.ToString(const AValue: FLOATTYPE; const AFormatSettings: TFormatSettings): string; overload; inline; static;
  35. begin
  36. Result:=FloatToStr(AValue,AFormatSettings);
  37. end;
  38. Class Function TFLOATHELPER.ToString(const AValue: FLOATTYPE; const AFormat: TFloatFormat; const APrecision, ADigits: Integer): string; overload; inline; static;
  39. begin
  40. Result:=FloatToStrF(AValue,AFormat,APrecision,ADigits,DefaultFormatSettings);
  41. end;
  42. Class Function TFLOATHELPER.ToString(const AValue: FLOATTYPE; const AFormat: TFloatFormat; const APrecision, ADigits: Integer; const AFormatSettings: TFormatSettings): string;
  43. overload; inline; static;
  44. begin
  45. Result:=FloatToStrF(AValue,AFormat,APrecision,ADigits,AFormatSettings);
  46. end;
  47. Class Function TFLOATHELPER.TryParse(const AString: string; out AValue: FLOATTYPE): Boolean; overload; inline; static;
  48. begin
  49. Result:=TryStrToFloat(AString,AValue,DefaultFormatSettings);
  50. end;
  51. Class Function TFLOATHELPER.TryParse(const AString: string; out AValue: FLOATTYPE; const AFormatSettings: TFormatSettings): Boolean; overload; inline;
  52. static;
  53. begin
  54. Result:=TryStrToFloat(AString,AValue,AFormatSettings);
  55. end;
  56. Function TFLOATHELPER.GetB(AIndex: Cardinal): Byte;
  57. begin
  58. if (AIndex>=SizeOf(FLOATTYPE)) then
  59. system.Error(reRangeError);
  60. Result:=PByte(@Self)[AIndex];
  61. end;
  62. Function TFLOATHELPER.GetW(AIndex: Cardinal): Word;
  63. begin
  64. if (AIndex>=(SizeOf(FLOATTYPE) div SizeOf(Word))) then
  65. system.Error(reRangeError);
  66. Result:=PWord(@Self)[AIndex];
  67. end;
  68. Function TFLOATHELPER.GetE: QWord; inline;
  69. begin
  70. Result:=TFloatRec(Self).Exp;
  71. end;
  72. Function TFLOATHELPER.GetF: QWord; inline;
  73. begin
  74. Result:=TFloatRec(Self).Frac;
  75. end;
  76. Function TFLOATHELPER.GetS: Boolean; inline;
  77. begin
  78. Result:=TFloatRec(Self).Sign;
  79. end;
  80. procedure TFLOATHELPER.SetB(AIndex: Cardinal; const AValue: Byte);
  81. begin
  82. if (AIndex>=SizeOf(FLOATTYPE)) then
  83. system.Error(reRangeError);
  84. PByte(@Self)[AIndex]:=AValue;
  85. end;
  86. procedure TFLOATHELPER.SetW(AIndex: Cardinal; const AValue: Word);
  87. begin
  88. if (AIndex>=(SizeOf(FLOATTYPE) div SizeOf(Word))) then
  89. system.Error(reRangeError);
  90. PWord(@Self)[AIndex]:=AValue;
  91. end;
  92. procedure TFLOATHELPER.SetE(AValue: QWord);
  93. begin
  94. TFloatRec(Self).Exp:=AValue;
  95. end;
  96. procedure TFLOATHELPER.SetF(AValue: QWord);
  97. begin
  98. TFloatRec(Self).Frac:=AValue;
  99. end;
  100. procedure TFLOATHELPER.SetS(AValue: Boolean);
  101. begin
  102. TFloatRec(Self).Sign:=AValue;
  103. end;
  104. Procedure TFLOATHELPER.BuildUp(const ASignFlag: Boolean; const AMantissa: QWord; const AExponent: Integer);
  105. begin
  106. TFloatRec(Self).BuildUp(ASignFlag, AMantissa, AExponent);
  107. end;
  108. Function TFLOATHELPER.Exponent: Integer;
  109. begin
  110. Result:=TFloatRec(Self).Exponent;
  111. end;
  112. Function TFLOATHELPER.Fraction: Extended;
  113. begin
  114. Result:=TFloatRec(Self).Fraction;
  115. end;
  116. Function TFLOATHELPER.IsInfinity: Boolean; overload; inline;
  117. begin
  118. Result:=TFloatRec(Self).SpecialType in [fsInf,fsNinf];
  119. end;
  120. Function TFLOATHELPER.IsNan: Boolean; overload; inline;
  121. begin
  122. Result:=TFloatRec(Self).SpecialType=fsNan;
  123. end;
  124. Function TFLOATHELPER.IsNegativeInfinity: Boolean; overload; inline;
  125. begin
  126. Result:=TFloatRec(Self).SpecialType=fsNinf;
  127. end;
  128. Function TFLOATHELPER.IsPositiveInfinity: Boolean; overload; inline;
  129. begin
  130. Result:=TFloatRec(Self).SpecialType=fsInf;
  131. end;
  132. Function TFLOATHELPER.Mantissa: QWord;
  133. begin
  134. Result:=TFLoatRec(Self).Mantissa(True);
  135. end;
  136. Function TFLOATHELPER.SpecialType: TFloatSpecial;
  137. begin
  138. Result:=TFLoatRec(Self).SpecialType;
  139. end;
  140. Function TFLOATHELPER.ToString(const AFormat: TFloatFormat; const APrecision, ADigits: Integer): string; overload; inline;
  141. begin
  142. Result:=FloatToStrF(Self,AFormat,APrecision,ADigits,DefaultFormatSettings);
  143. end;
  144. Function TFLOATHELPER.ToString(const AFormat: TFloatFormat; const APrecision, ADigits: Integer; const AFormatSettings: TFormatSettings): string; overload; inline;
  145. begin
  146. Result:=FloatToStrF(Self,AFormat,APrecision,ADigits,AFormatSettings);
  147. end;
  148. Function TFLOATHELPER.ToString(const AFormatSettings: TFormatSettings): string; overload; inline;
  149. begin
  150. Result:=FloatToStr(Self,AFormatSettings);
  151. end;
  152. Function TFLOATHELPER.ToString: string; overload; inline;
  153. begin
  154. Result:=FloatToStr(Self,DefaultFormatSettings);
  155. end;