home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 September / Chip_2001-09_cd1.bin / zkuste / delphi / kolekce / d6 / RX275D6.ZIP / Units / MAXMIN.PAS < prev    next >
Pascal/Delphi Source File  |  1999-10-12  |  4KB  |  184 lines

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