I need to return min and max values of two Integers in many situations in my Pascal Script. But every time I need to create a TStringList
, add my two or more Integers to it and convert it to an Array Of String
and then get its min and max values using two of my functions called ArrayOfStringMax
and ArrayOfStringMin.
I like to have two functions like Min
and Max
to make this easier like unit Math
in Delphi.
For example,
Log(IntToStr(Min(1000, 26)));
Output should be 26
.
Log(IntToStr(Max(45, 1989)));
Output should be 1989.
Currently I only need Min
and Max
for Integer
Type. If a function can be made to return minimum and maximum values even of Single
, Double
, Extended
, Int64
types, it will be a very useful function.
UPDATE
procedure StringListToArrayOfString(StringList: TStringList; var ArrayOfString: Array Of String);
var
X: Integer;
begin
SetLength( ArrayOfString, StringList.Count);
for X := 0 to (StringList.Count - 1) do ArrayOfString[X] := StringList.Strings[X];
end;
function ArrayOfStringMax(ArrayOfString: Array of String): String;
var
X, M: Integer;
begin
M := StrToInt(ArrayOfString[Low(ArrayOfString)]);
for X := 1 to High(ArrayOfString) do
if StrToInt(ArrayOfString[X]) > M then M := StrToInt(ArrayOfString[X]);
Result := IntToStr(M);
end;
function ArrayOfStringMin(ArrayOfString: Array of String): String;
var
X, M: Integer;
begin
M := StrToInt(ArrayOfString[Low(ArrayOfString)]);
for X := 1 to High(ArrayOfString) do
if StrToInt(ArrayOfString[X]) < M then M := StrToInt(ArrayOfString[X]);
Result := IntToStr(M);
end;
Those are the three functions I currently using in the Script.
Thanks in advance.
Inno Setup Pascal Script does not support generic function nor function overloading. So if you need to implement the function for floats, you have to use a different name like
MinFloat
,MaxFloat
. The implementation will be identical (except for parameter and return value types obviously).Though you can share implementation for integer and float types. You can use a
LongInt
implementation for theInteger
type. The same way, you can use aDouble
implementation for theSingle
type.If you want to implement the functions for array of numbers, there's no need to convert the array to strings. Just use array of numbers,
array of Integer
: