Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup 循环命令或函数,直到Inno设置中的条件变为真_Inno Setup - Fatal编程技术网

Inno setup 循环命令或函数,直到Inno设置中的条件变为真

Inno setup 循环命令或函数,直到Inno设置中的条件变为真,inno-setup,Inno Setup,我想在运行使用Inno Setup创建的程序安装程序时,向用户显示一个漂亮的欢迎动画GIF 我想使用Isgsg.dll按顺序显示一些PNG图像(因为Inno安装程序还不支持显示动画GIF),直到安装程序完成对大量代码的初始化 我写了一段代码来按顺序显示这些PNG图像,但在显示最后一幅图像后,它就停止了 我需要继续显示从第一个PNG图像后,最后一个显示之前 如果设置已初始化,(我的意思是如果向导窗体可见),循环过程应停止 我为显示这些PNG图像而编写的代码: function Initialize

我想在运行使用Inno Setup创建的程序安装程序时,向用户显示一个漂亮的欢迎动画GIF

我想使用
Isgsg.dll
按顺序显示一些PNG图像(因为Inno安装程序还不支持显示动画GIF),直到安装程序完成对大量代码的初始化

我写了一段代码来按顺序显示这些PNG图像,但在显示最后一幅图像后,它就停止了

我需要继续显示从第一个PNG图像后,最后一个显示之前

如果设置已初始化,(我的意思是如果
向导窗体
可见),循环过程应停止

我为显示这些PNG图像而编写的代码:

function InitializeSetup(): Boolean;
var
  DlgWait: TForm;
if Result = True then begin
ExtractTemporaryFile('Welcome1.png');
ExtractTemporaryFile('Welcome2.png');
ExtractTemporaryFile('Welcome3.png');
ExtractTemporaryFile('Welcome4.png');
ExtractTemporaryFile('Welcome5.png');
ExtractTemporaryFile('Welcome6.png');
ExtractTemporaryFile('Welcome7.png');
>

>

我怎样才能做到我所期望的

更新的问题

我想不出为什么这个代码不起作用

此DLL需要PNG文件的文件名作为
AnsiString

但是我提供了一个
字符串

这是不是出了问题,或者是其他Synatx错误导致它无法工作

不工作
表示显示循环过程不工作的PNG图像

我试图添加的代码使用重复直到来执行此条件循环:

function InitializeSetup(): Boolean;
var
  DlgWait: TForm;
  IMessageHandler: TForm;
  X: Integer;
  ErrorCode: Integer;
  LblWait: TLabel;
if Result := True then begin
DlgWait := TForm.Create(nil);
DlgWait.Hide;
begin
Order:=1;
Repeat
ShowSplashScreen(DlgWait.Handle,ExpandConstant('{tmp}\Welcome+IntToStr(Order)+.png'),0250,1000,0250,0,255,True,$FFFFFF,10);
Order:=Order+1;
Until FileExists(ExpandConstant('{tmp}\Welcome+IntToStr(Order)+.png')) = False;
end;
end;
有语法错误吗

但编译器不会给出任何编译器警告或错误


提前感谢。

到达终点后,您需要重置计数器。像这样的事情应该让你开始。(注意:未测试-我在这台机器上没有InnoSetup。请用适当的方法替换
中的测试,直到
中检测到向导窗体可见。)


请学习在此处和代码/文本编辑器中正确格式化代码。它使它更易于阅读和维护。编译器不关心空格,所以正确地在逗号和+符号前后缩进和放置空格只需敲击一次键就可以了,而且从长远来看,它可以省去头痛和视力。谢谢你,我回家后会试试,并通知你发生了什么事。干得好,肯·怀特…………干得好,它工作正常,循环工作正常。但是我不能给出是否停止的条件………安装程序在这个循环过程中被卡住了,因为我设置为
直到Order>7
,因为当我尝试设置
直到WizardForm.Visible
在创建WizardForm之前尝试访问它。
错误发生。当
WizardForm
创建时,任何有经验的程序员都可以给我一个很好的条件来停止循环-/顺序永远不会是
>7
,因为当它达到7时,会重置为1,而这将在
部分执行之前发生。。(您是否阅读了我编写的代码,特别是行
if Order>NumImages then Order:=1;
?)我不知道如何告诉您WizardForm何时可用,因为我没有编写您的代码。是的,我读到我忘了添加
NumImages
…我现在要添加。我想知道为什么我不能设置像
如果WizardForm.Visible
?当我将条件设置为
直到(Order=7)而不是WizardForm.Visible
设置甚至在循环中卡住了……。为什么会发生这种情况………条件不会发生这样的情况?
...
end;
function InitializeSetup(): Boolean;
var
  DlgWait: TForm;
  IMessageHandler: TForm;
  X: Integer;
  ErrorCode: Integer;
  LblWait: TLabel;
if Result := True then begin
DlgWait := TForm.Create(nil);
DlgWait.Hide;
begin
Order:=1;
Repeat
ShowSplashScreen(DlgWait.Handle,ExpandConstant('{tmp}\Welcome+IntToStr(Order)+.png'),0250,1000,0250,0,255,True,$FFFFFF,10);
Order:=Order+1;
Until FileExists(ExpandConstant('{tmp}\Welcome+IntToStr(Order)+.png')) = False;
end;
end;
function InitializeSetup(): Boolean;
var
  DlgWait: TForm;
  IMessageHandler: TForm;
  X: Integer;
  ErrorCode: Integer;
  LblWait: TLabel;
const
  NumImages = 7;
begin
  if Result then 
  begin
    DlgWait := TForm.Create(nil);
    DlgWait.Hide;
    Order := 1;
    repeat
      ShowSplashScreen(DlgWait.Handle, ExpandConstant('{tmp}\Welcome' + IntToStr(Order) + '.png'), 0250, 1000, 0250, 0,255, True, $FFFFFF, 10);
      Order := Order + 1;
      if Order > NumImages then
        Order := 1;
    until WizardForm.Visible;
  end;
end;