【问题标题】:How to check if a string is a valid Windows folder name using Delphi? [duplicate]如何使用 Delphi 检查字符串是否是有效的 Windows 文件夹名称? [复制]
【发布时间】:2011-07-03 14:55:57
【问题描述】:

可能重复:
How can I sanitize a string for use as a filename?

我需要从用户的文本中创建一个文件夹(unicode 字符串类型)。 windows下文件夹名有些字符是非法的。

你知道 Delphi 函数检查文件夹名称是否有效吗?
或者最好的方法是将字符串转换为有效的文件夹名称(剥离或转换无效字符)?

感谢您的帮助!

编辑:请参阅下面有关非法关键字的说明。

【问题讨论】:

  • 重要提示:这不仅仅是只是禁止字符的问题,还有非法词:'CON','COM','LPT','NUL',' PRN', 'AUX' ...我必须手动检查它吗?
  • @TridenT 我不知道有一个函数会为您提供这些非法名称。您是否在某处有文件可以将它们召唤出来?检查时记得使用不区分大小写的SameText!
  • @TridenT 这个问题是重复的(见上面的评论),因为它发生了。挖掘机找到了原件。亚历山大那里给出的答案应该可以为您完成这项工作。
  • @TridenT - 您缺少要求。您打算打开文件吗?写?验证它是否存在?在这组要求下,CON、COM、LPT 等仍然是有效的文件名,只是不能用它们来命名文件。创建名为“C:\”的文件也是如此——这是有效的,但您不能使用它来命名文件。请更具体。
  • @Leonardo 正如我所写:从字符串创建文件夹

标签: windows delphi directory delphi-xe


【解决方案1】:

查看 How can I sanitize a string for use as a filename? 的 StackOverFlow 答案

希望这会有所帮助,并有您正在寻找的东西!

编辑:应大众需求删除了 About.com 链接!如果你想要那个链接,请看 cmets

【讨论】:

【解决方案2】:

你可以试试这个代码

if CreateDir(DirectoryName) then
begin
  Showmessage('Valid directory name and directory created');
end
else
begin
  Showmessage('Failed');
end; 

【讨论】:

  • 这不是一个好的解决方案,因为创建目录可能由于其他原因(例如访问权限)而失败。这里没有办法区分。除此之外,OP提到更正文件夹名称。
  • 这不是投反对票的动机。 OP声明他想创建目录;由于无法完成而失败实际上是预期的,不是吗?
  • 我没有投反对票。似乎有人投票赞成以弥补反对票。
【解决方案3】:

您可以使用来自StrUtils 单元的ContainsStrReplaceStr 轻松地自行完成此操作。不知道有没有这个API方法,也许其他人可以回答一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-20
    • 2020-10-15
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2010-09-08
    相关资源
    最近更新 更多