Inno Setup以Pascal Script

时间:2016-09-17 02:16:16

标签: integer max inno-setup min pascalscript

我需要在Pascal脚本中的许多情况下返回两个整数的最小值和最大值。但每次我需要创建TStringList时,将我的两个或更多整数添加到它并将其转换为Array Of String,然后使用我的两个函数{{1}来获取其最小值和最大值}和ArrayOfStringMax

我希望有两个函数,例如ArrayOfStringMin.Min,以便像Delphi中的单元Max一样使这更容易。

例如,

Math

输出应为Log(IntToStr(Min(1000, 26)));

26

输出应为Log(IntToStr(Max(45, 1989)));

目前,1989.类型只需要MinMax。如果可以使函数返回IntegerSingleDoubleExtended类型的最小值和最大值,则它将是一个非常有用的函数。

更新

Int64

这些是我目前在剧本中使用的三个功能。

提前致谢。

1 个答案:

答案 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不支持泛型函数或函数重载。因此,如果您需要为浮点数实现该函数,则必须使用其他名称,例如MinFloatMaxFloat。实现将是相同的(显然除了参数和返回值类型)。

虽然您可以共享整数和浮点类型的实现。您可以对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;