如何解决未声明的标识符soAllDirectories
我正在尝试使用TDirectory.GetFiles函数,但是当我添加一个TSearchOptions第三个参数来强制进行递归搜索时,编译器会引发一个错误,指出soAllDirectories尚未声明。
uses System.IOutils,System.Types;
procedure TfrmConversio.btnConversioClick(Sender: TObject);
var FilesPas: TStringDynArray;
begin
FilesPas := TDirectory.GetFiles('C:\Project','*.pas',soAllDirectories);
ProgressBar1.Max := Length(FilesPas);
end;
我在做什么错?我可以在System.IOUtils中看到该常量。
谢谢。
解决方法
您需要写
TDirectory.GetFiles('C:\Project','*.pas',TSearchOption.soAllDirectories);
原因是在TSearchOption
类型的定义之前找到了编译器指令{$SCOPEDENUMS ON}
。这恰好意味着您需要使用类型名称来限定枚举的常量。
从文档中:
$ SCOPEDENUMS 指令启用或禁用在Delphi代码中使用范围枚举。更具体地说,$ SCOPEDENUMS仅影响新枚举的定义,并且仅控制将枚举的值符号添加到全局范围。
在 {$ SCOPEDENUMS ON} 状态下,枚举是作用域,而枚举值不会添加到全局作用域。要指定作用域枚举的成员,必须包含枚举的类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。