gpt4 book ai didi

Delphi Tpath.Combine ('c:' 、 'myfile.txt' )省略了 DirSeperator

转载 作者:行者123 更新时间:2023-12-03 15:44:55 25 4
gpt4 key购买 nike

所以当我运行时

TPath.Combine('c:', 'myfile.txt');

在 Delphi XE2 中,我得到“C:myfile.txt”作为返回。这不是我所期望的,也不是 Windows 中的有效路径。我希望 TPath.Combine 是对 Windows API ( http://msdn.microsoft.com/en-us/library/fyy7a5kt%28v=vs.110%29.aspx ) 的调用,或者具有与 API 相同的行为。

我是不是做错了什么?我可以“修复” TPath.Combine 的行为吗?或者我是否必须搜索代码中的所有用途并将其替换为中间带有“\”的字符串连接?

最佳答案

我认为这种行为是正确的,并且符合设计。 C:myfile.txtC:\myfile.txt 之间存在差异。 Windows documentation非常明确地指出这一点:

If a file name begins with only a disk designator but not the backslash after the colon, it is interpreted as a relative path to the current directory on the drive with the specified letter. Note that the current directory may or may not be the root directory depending on what it was set to during the most recent "change directory" operation on that disk. Examples of this format are as follows:

  • "C:tmp.txt" refers to a file named "tmp.txt" in the current directory on drive C.
  • "C:tempdir\tmp.txt" refers to a file in a subdirectory to the current directory on drive C.

如果 RTL 函数 TPath.Combine 在驱动器指示符后添加分隔符,那么您将无法使用 TPath.Combine 生成如下路径“C:tmp.txt”。因此,如果您想要一个目录分隔符,您需要自己提供一个:

TPath.Combine('c:\', 'myfile.txt');

请注意,Delphi RTL 类 TPath 松散建模的 .net 框架方法 Path.Combine 的行为与 Delphi RTL 等效项相同。

相关:

关于Delphi Tpath.Combine ('c:' 、 'myfile.txt' )省略了 DirSeperator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25669923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com