Inno Setup循环从A到Z.

时间:2015-06-29 01:21:09

标签: inno-setup

我正在尝试编写一个函数,该函数将依次检查每个驱动器上是否存在特定目录,将其存储的路径存储为变量,如果存在则返回true,否则返回false:

function IsDirPresent(): Boolean;
var
  chrDriveLetter: Char;
  strMyDir: String;
begin
  for chrDriveLetter := 'A' to 'Z' do
    begin
      if DirExists(chrDriveLetter + ':\MyDir') then
        strMyDirPath := chrDriveLetter + ':\MyDir'
    end;
  if strMyDirPath <> '' then
    Result := True;
end;

编译时,我的循环线上出现类型不匹配错误。我正在努力弄清楚循环的问题,并且能够找到有关如何在Inno Setup中从A到Z正确创建循环的任何信息。

1 个答案:

答案 0 :(得分:3)

你的循环对Pascal语言有效,因为Char类型是序数的,它的范围常量是相同的类型,所以我想这是Pascal Script语言符号的特定限制。我不知道是否有一些语法解决方法,也不知道Char类型是否允许用于循环控制变量。

我只能为您提供使用整数类型循环控制变量的变通方法。它使用OrdChr函数。第一个返回char的序数值,后一个ASCII char来自序数值:

var
  C: Char;
  I: Integer;
begin
  for I := Ord('A') to Ord('Z') do
  begin
    C := Chr(I);
    ...
  end;
end;