Delphi System.IOUtils.TDirectory.GetParent异常行为?

Delphi System.IOUtils.TDirectory.GetParent异常行为?,delphi,Delphi,GetParent('c:\1\2\')的结果是'c:\1\2' 而GetParent('c:\1\2')的结果是'c:\1' 这是正常/预期的行为吗?如果是,其背后的逻辑是什么?这种行为可能看起来有点奇怪,但它是故意的。此类以.net类目录为模型。for目录.GetParent显示: 此方法返回的字符串由路径中直到(但不包括)最后一个DirectorySeparatorChar或AltDirectorySeparatorChar的所有字符组成。例如,将路径“C:\Directory\SubDi

GetParent('c:\1\2\')
的结果是
'c:\1\2'

GetParent('c:\1\2')
的结果是
'c:\1'


这是正常/预期的行为吗?如果是,其背后的逻辑是什么?

这种行为可能看起来有点奇怪,但它是故意的。此类以.net类
目录
为模型。for
目录.GetParent
显示:

此方法返回的字符串由路径中直到(但不包括)最后一个DirectorySeparatorChar或AltDirectorySeparatorChar的所有字符组成。例如,将路径“C:\Directory\SubDirectory\test.txt”传递给GetParent会返回“C:\Directory\SubDirectory”。传递“C:\Directory\SubDirectory”返回“C:\Directory”。但是,传递“C:\Directory\SubDirectory\”将返回“C:\Directory\SubDirectory”,因为结束的目录分隔符位于“SubDirectory”之后


您的目录结构是什么/What files?函数接受尾随的反斜杠作为正确的输入,但不能正确处理它。似乎是bug。作为一种解决方法,您可以将其更改为
GetParent(ExcludeTrailingPathDelimiter('C:\1\2\)
GetParent
不是很聪明-它实际上不会查询文件系统以确定
2
是文件还是目录,路径中的文件名是否为空;它只是删除从反斜杠的结尾到最后一个实例的所有内容。@J。。。不管文件系统如何,让函数在字符串上工作都很有用谢谢链接。Delphi的文档没有提到分隔符(反斜杠)“问题”。