我正在尝试编写一个函数,该函数将依次检查每个驱动器上是否存在特定目录,将其存储的路径存储为变量,如果存在则返回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正确创建循环的任何信息。
答案 0 :(得分:3)
你的循环对Pascal语言有效,因为Char
类型是序数的,它的范围常量是相同的类型,所以我想这是Pascal Script语言符号的特定限制。我不知道是否有一些语法解决方法,也不知道Char
类型是否允许用于循环控制变量。
我只能为您提供使用整数类型循环控制变量的变通方法。它使用Ord
和Chr
函数。第一个返回char的序数值,后一个ASCII char来自序数值:
var
C: Char;
I: Integer;
begin
for I := Ord('A') to Ord('Z') do
begin
C := Chr(I);
...
end;
end;