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;
При компиляции я получаю ошибку несоответствия типов в моей строке цикла. Я изо всех сил пытаюсь выяснить, что не так с циклом, и не смог найти никакой информации о том, как правильно создать цикл от A до Z в Inno Setup.
1 ответ
Ваш цикл действителен для языка Паскаль, потому что Char
тип является порядковым, и его константы диапазона имеют одинаковый тип, так что я предполагаю, что это конкретное ограничение нотации языка Pascal Script. Я не знаю, есть ли какой-то синтаксический обход, или если Char
Тип даже разрешено использовать для переменной управления цикла.
Я могу только предоставить вам обходной путь, работающий с переменной управления циклами целочисленного типа. Он использует Ord
а также Chr
функции. Первый возвращает порядковый номер символа, последний ASCII-символ из порядкового значения:
var
C: Char;
I: Integer;
begin
for I := Ord('A') to Ord('Z') do
begin
C := Chr(I);
...
end;
end;