在 Inno Setup 中以随机数作为参数执行程序?
Execute program with random number as a parameter in Inno Setup?
如何在 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 identifier: "Random"
谢谢
如果有人有这样的问题,我设法用下面的代码解决了。
[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;
您答案中的代码有效,但不必要地复杂:
- 使用 scripted constant 参数,避免创建两个仅相差一个常量的函数;
- 使用
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;
如何在 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 identifier: "Random"
谢谢
如果有人有这样的问题,我设法用下面的代码解决了。
[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;
您答案中的代码有效,但不必要地复杂:
- 使用 scripted constant 参数,避免创建两个仅相差一个常量的函数;
- 使用
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;