Inno Setup 循环从头到尾

Inno Setup loop from A to Z

我正在尝试编写一个函数,依次检查每个驱动器上是否存在特定目录,将找到它的路径存储为变量,return 如果存在则为真,为假否则:

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 的循环的任何信息。

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

我只能为您提供使用整数类型循环控制变量的解决方法。它使用 OrdChr 函数。第一个returns一个char的序数值,后面的ASCII char取序数值:

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