如何找出由定义的某个动态数组的最小值和最大值array of Integer
?
前任:
Y: array of integer;
最简单的方法是使用执行此服务的内置函数。它们被称为MinIntValue
并且MaxIntValue
可以在数学单元中找到。
uses
Math;
....
TheMin := MinIntValue(TheArray);
TheMax := MaxIntValue(TheArray);
在单元数学中有为此的重载函数:
function MinValue(const Data: array of Single): Single; overload;
function MinValue(const Data: array of Double): Double; overload;
function MinValue(const Data: array of Extended): Extended; overload;
function MinIntValue(const Data: array of Integer): Integer;
function MaxValue(const Data: array of Single): Single; overload;
function MaxValue(const Data: array of Double): Double; overload;
function MaxValue(const Data: array of Extended): Extended; overload;
function MaxIntValue(const Data: array of Integer): Integer;
因为您使用的是整数,所以您应该使用 MinIntValue 和 MaxIntValue
您必须遍历数组,寻找所需的值,例如:
function TMyClass.GetMinValue: Integer;
var
Idx: Integer;
begin
Result := MyArray[Low(MyArray)];
for Idx := Low(MyArray)+1 to High(MyArray) do
begin
if MyArray[Idx] < Result then
Result := MyArray[Idx];
end;
end;
function TMyClass.GetMaxValue: Integer;
var
Idx: Integer;
begin
Result := MyArray[Low(MyArray)];
for Idx := Low(MyArray)+1 to High(MyArray) do
begin
if MyArray[Idx] > Result then
Result := MyArray[Idx];
end;
end;
它可以在一个循环中完成......
function ArrayValRange( somearray: array of integer; var minval: integer; var maxval: integer): boolean;
var
i: integer;
begin
result := false;
if length( somearray) < 1 then
exit;
result := true;
maxval = somearray[ Low(somearray)];
minval = maxval;
for i := Low(somearray)+1 to High(somearray) do
begin
if somearray[i] > maxval then
maxval := somearray[i];
if somearray[i] < minval then
minval := somearray[i];
end;
end;
然后
if ArrayValRange( myarray, min, max) then
begin
//do your thing
end;