Maxmin.pas 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. {*******************************************************}
  2. { }
  3. { Delphi VCL Extensions (RX) }
  4. { }
  5. { Copyright (c) 1996 AO ROSNO }
  6. { }
  7. {*******************************************************}
  8. {$I RX.INC}
  9. {$N+}
  10. unit MaxMin;
  11. interface
  12. function Max(A, B: Longint): Longint;
  13. function Min(A, B: Longint): Longint;
  14. function MaxInteger(const Values: array of Longint): Longint;
  15. function MinInteger(const Values: array of Longint): Longint;
  16. {$IFDEF RX_D4}
  17. function MaxInt64(const Values: array of int64): int64;
  18. function MinInt64(const Values: array of int64): int64;
  19. {$ENDIF}
  20. function MaxFloat(const Values: array of Extended): Extended;
  21. function MinFloat(const Values: array of Extended): Extended;
  22. function MaxDateTime(const Values: array of TDateTime): TDateTime;
  23. function MinDateTime(const Values: array of TDateTime): TDateTime;
  24. {$IFDEF WIN32}
  25. function MaxOf(const Values: array of Variant): Variant;
  26. function MinOf(const Values: array of Variant): Variant;
  27. {$ENDIF}
  28. procedure SwapLong(var Int1, Int2: Longint);
  29. procedure SwapInt(var Int1, Int2: Integer);
  30. {$IFDEF RX_D4}
  31. procedure SwapInt64(var Int1, Int2: Int64);
  32. {$ENDIF}
  33. {$IFNDEF WIN32}
  34. function MakeWord(A, B: Byte): Word;
  35. {$ENDIF}
  36. implementation
  37. {$IFNDEF WIN32}
  38. function MakeWord(A, B: Byte): Word;
  39. begin
  40. Result := A or B shl 8;
  41. end;
  42. {$ENDIF}
  43. procedure SwapInt(var Int1, Int2: Integer);
  44. var
  45. I: Integer;
  46. begin
  47. I := Int1; Int1 := Int2; Int2 := I;
  48. end;
  49. {$IFDEF RX_D4}
  50. procedure SwapInt64(var Int1, Int2: Int64);
  51. var
  52. I: Int64;
  53. begin
  54. I := Int1; Int1 := Int2; Int2 := I;
  55. end;
  56. {$ENDIF}
  57. procedure SwapLong(var Int1, Int2: Longint);
  58. var
  59. I: Longint;
  60. begin
  61. I := Int1; Int1 := Int2; Int2 := I;
  62. end;
  63. function Max(A, B: Longint): Longint;
  64. begin
  65. if A > B then Result := A
  66. else Result := B;
  67. end;
  68. function Min(A, B: Longint): Longint;
  69. begin
  70. if A < B then Result := A
  71. else Result := B;
  72. end;
  73. function MaxInteger(const Values: array of Longint): Longint;
  74. var
  75. I: Cardinal;
  76. begin
  77. Result := Values[0];
  78. for I := 0 to High(Values) do
  79. if Values[I] > Result then Result := Values[I];
  80. end;
  81. function MinInteger(const Values: array of Longint): Longint;
  82. var
  83. I: Cardinal;
  84. begin
  85. Result := Values[0];
  86. for I := 0 to High(Values) do
  87. if Values[I] < Result then Result := Values[I];
  88. end;
  89. {$IFDEF RX_D4}
  90. function MaxInt64(const Values: array of int64): int64;
  91. var
  92. I: Cardinal;
  93. begin
  94. Result := Values[0];
  95. for I := 0 to High(Values) do
  96. if Values[I] > Result then Result := Values[I];
  97. end;
  98. function MinInt64(const Values: array of int64): int64;
  99. var
  100. I: Cardinal;
  101. begin
  102. Result := Values[0];
  103. for I := 0 to High(Values) do
  104. if Values[I] < Result then Result := Values[I];
  105. end;
  106. {$ENDIF RX_D4}
  107. function MaxFloat(const Values: array of Extended): Extended;
  108. var
  109. I: Cardinal;
  110. begin
  111. Result := Values[0];
  112. for I := 0 to High(Values) do
  113. if Values[I] > Result then Result := Values[I];
  114. end;
  115. function MinFloat(const Values: array of Extended): Extended;
  116. var
  117. I: Cardinal;
  118. begin
  119. Result := Values[0];
  120. for I := 0 to High(Values) do
  121. if Values[I] < Result then Result := Values[I];
  122. end;
  123. function MaxDateTime(const Values: array of TDateTime): TDateTime;
  124. var
  125. I: Cardinal;
  126. begin
  127. Result := Values[0];
  128. for I := 0 to High(Values) do
  129. if Values[I] < Result then Result := Values[I];
  130. end;
  131. function MinDateTime(const Values: array of TDateTime): TDateTime;
  132. var
  133. I: Cardinal;
  134. begin
  135. Result := Values[0];
  136. for I := 0 to High(Values) do
  137. if Values[I] < Result then Result := Values[I];
  138. end;
  139. {$IFDEF WIN32}
  140. function MaxOf(const Values: array of Variant): Variant;
  141. var
  142. I: Cardinal;
  143. begin
  144. Result := Values[0];
  145. for I := 0 to High(Values) do
  146. if Values[I] > Result then Result := Values[I];
  147. end;
  148. function MinOf(const Values: array of Variant): Variant;
  149. var
  150. I: Cardinal;
  151. begin
  152. Result := Values[0];
  153. for I := 0 to High(Values) do
  154. if Values[I] < Result then Result := Values[I];
  155. end;
  156. {$ENDIF WIN32}
  157. end.