我需要在Pascal脚本中的许多情况下返回两个整数的最小值和最大值。但每次我需要创建TStringList
时,将我的两个或更多整数添加到它并将其转换为Array Of String
,然后使用我的两个函数{{1}来获取其最小值和最大值}和ArrayOfStringMax
我希望有两个函数,例如ArrayOfStringMin.
和Min
,以便像Delphi中的单元Max
一样使这更容易。
例如,
Math
输出应为Log(IntToStr(Min(1000, 26)));
。
26
输出应为Log(IntToStr(Max(45, 1989)));
目前,1989.
类型只需要Min
和Max
。如果可以使函数返回Integer
,Single
,Double
,Extended
类型的最小值和最大值,则它将是一个非常有用的函数。
更新
Int64
这些是我目前在剧本中使用的三个功能。
提前致谢。
答案 0 :(得分:1)
function Max(A, B: Integer): Integer;
begin
if A > B then
Result := A
else
Result := B;
end;
function Min(A, B: Integer): Integer;
begin
if A < B then
Result := A
else
Result := B;
end;
Inno Setup Pascal Script不支持泛型函数或函数重载。因此,如果您需要为浮点数实现该函数,则必须使用其他名称,例如MinFloat
,MaxFloat
。实现将是相同的(显然除了参数和返回值类型)。
虽然您可以共享整数和浮点类型的实现。您可以对LongInt
类型使用Integer
实施。同样,您可以对Double
类型使用Single
实现。
如果要实现数字数组的函数,则无需将数组转换为字符串。只需使用数字数组array of Integer
:
function Max(N: array of Integer): Integer;
var
I: Integer;
begin
if GetArrayLength(N) = 0 then RaiseException('Array is empty');
Result := N[Low(N)];
for I := Low(N) + 1 to High(N) do
begin
if N[I] > Result then Result := N[I];
end;
end;