【发布时间】:2011-04-16 12:58:58
【问题描述】:
我认为这必须在 RTL 中的某个地方,但我看了看,但找不到。
function IsValidFilename(filename: string): boolean;
//returns True if it would be possible to create or open a file with
//this name, without modifying the current directory structure
换句话说,它必须指向有效本地或网络驱动器上的现有文件夹,并且不包含任何无效字符。我们有这样的事情吗? (如果它检查当前用户的访问权限以确保您可以访问相关文件夹,则会获得奖励积分。)
【问题讨论】:
-
我有点迂腐,我知道,但是请使用
const FileName: string! -
对了,你的问题实在是太模糊了。我认为
DirectoryExists(ExtractFilePath(FileName))是必要的要求,ExtractFileName(FileName)仅包含有效字符这一事实也是如此。但这并不意味着您可以在此目录中创建甚至读取文件。该目录很可能是只读的(例如 Program Files 或 Windows),因此您可以打开文件,但不能创建文件。您甚至可能无法阅读(例如,另一个用户的目录)。另外,如果文件存在但您可以重写它怎么办?我们应该返回 true 还是 false? -
更好:
const FileName: TFileName. -
@AndreasRejbrand-他要做一些 IO 操作(读/写文件)。在硬盘驱动器上,这将至少需要 12 毫秒(将磁头放在正确扇区上的平均时间)。实际上,它需要百分之几毫秒。我不认为 CONST 添加的增益 (ns) 在这种情况下会有所不同 :) PS:我不反对使用 CONST。我的意思是,在这种情况下,它不会有任何影响。
-
好问题。可惜没有好的答案!