我有一个自定义卸载页面,使用以下行调用:
UninstallProgressForm.InnerNotebook.ActivePage := UninstallConfigsPage;
现在,这只是每次运行卸载程序时显示页面,但我只需要显示某些文件夹是否存在(其中有6个)。我可以用一堆if
来发表or
声明,但我想知道是否有更简洁的方法来做这件事。
答案 0 :(得分:2)
一般来说,没有比为每个文件夹调用DirExists
更好的方法了:
if DirExists('C:\path1') or
DirExists('C:\path2') or
DirExists('C:\path3') then
begin
{ ... }
end;
但是,在处理一组文件/文件夹时,建议将其列表存储在某个容器(如TStringList
或array of string
)中,以允许其(重复)批量处理 - 处理。您已经拥有my solution to your other question的Dirs: TStringList
。
var
Dirs: TStringList;
begin
Dirs := TStringList.Create();
Dirs.Add('C:\path1');
Dirs.Add('C:\path2');
Dirs.Add('C:\path2');
end;
function AnyDirExists(Dirs: TStringList): Boolean;
var
I: Integer;
begin
for I := 0 to Dirs.Count - 1 do
begin
if DirExists(Dirs[I]) then
begin
Result := True;
Exit;
end;
end;
Result := False;
end;
但我从your other question知道,您将所有路径映射到复选框。因此,您需要做的就是检查是否有任何复选框:
if CheckListBox.Items.Count > 0 then
begin
UninstallProgressForm.InnerNotebook.ActivePage := UninstallConfigssPage;
{ ... }
if UninstallProgressForm.ShowModal = mrCancel then Abort;
{ ... }
UninstallProgressForm.InnerNotebook.ActivePage := UninstallProgressForm.InstallingPage;
end;