use*_*950 3 delphi path delphi-xe2
所以,当我跑
TPath.Combine('c:', 'myfile.txt');
Run Code Online (Sandbox Code Playgroud)
在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文档调用了这一点很明确:
如果文件名仅以磁盘指示符开头但不以冒号后面的反斜杠开头,则会将其解释为指定字母的驱动器上当前目录的相对路径.请注意,当前目录可能是也可能不是根目录,具体取决于在该磁盘上最近的"更改目录"操作期间设置的目录.此格式的示例如下:
- "C:tmp.txt"指的是驱动器C上当前目录中名为"tmp.txt"的文件.
- "C:tempdir\tmp.txt"是指驱动器C上当前目录的子目录中的文件.
如果RTL函数TPath.Combine在驱动器指示符之后添加了一个分隔符,那么您将无法使用它TPath.Combine来生成类似的路径"C:tmp.txt".所以,如果你想要一个目录分隔符,你需要自己提供一个:
TPath.Combine('c:\', 'myfile.txt');
Run Code Online (Sandbox Code Playgroud)
请注意,Path.CombineDelphi RTL类TPath松散建模的.net框架方法与Delphi RTL等效的行为相同.
有关:
| 归档时间: |
|
| 查看次数: |
3457 次 |
| 最近记录: |