Запустить программу со случайным числом в качестве параметра в Inno Setup? - PullRequest
0 голосов
/ 21 мая 2018

Как включить случайное число в строку в Inno Setup?

[Run]
#define rndH Random(24) 
#define rndM Random(60)

Filename: "schtasks"; \
  Parameters: "/Create /F /SC DAILY /ST {rndH}:{rndM} /RU SYSTEM /RL HIGHEST /TN ""Program Title"" /TR ""'{app}\program.exe'""";

Когда я пытаюсь выполнить приведенный выше код, я получаю сообщение об ошибке

[ISPP] Undeclaredидентификатор: "Случайный"

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Код в вашем ответе работает, но он неоправданно сложен:

  • Используйте параметр сценария с константами , чтобы избежать создания двух функций, которые отличаются только константой;
  • Используйте Format function для дополнения числа до двух цифр;
  • Нет необходимости использовать глобальные переменные (хотя моей версии вообще не нужны никакие переменные).
[Run]
Filename: "schtasks"; \
  Parameters: "/Create /F /SC DAILY /ST {code:MyRand|24}:{code:MyRand|60} ...";
[Code]

function MyRand(Param: string): string;
begin
  Result := Format('%.2d', [Random(StrToInt(Param))]);
end;
0 голосов
/ 21 мая 2018

Если у кого-то есть такой вопрос, мне удалось сделать это с кодом ниже.

[Run]
Filename: "schtasks"; \
  Parameters: "/Create /F /SC DAILY /ST {code:MyRandH}:{code:MyRandM} /RU SYSTEM /RL HIGHEST /TN ""Program Title"" /TR ""'{app}\program.exe'""";

[Code]
var
  h: Integer;
  m: Integer;

function MyRandH(Param: String): String;
begin
  h := Random(24);
  if h < 10 then
    Result := '0' + IntToStr(h)
  else
    Result := IntToStr(h);
end;

function MyRandM(Param: String): String;
begin
  m := Random(60);
  if m < 10 then
    Result := '0' + IntToStr(m)
  else
    Result := IntToStr(m);
end;
...