- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以当我运行时
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.txt
和 C:\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/
所以当我运行时 TPath.Combine('c:', 'myfile.txt'); 在 Delphi XE2 中,我得到“C:myfile.txt”作为返回。这不是我所期望的,也不是 Windows
我是一名优秀的程序员,十分优秀!