gpt4 book ai didi

Delphi Copyfile 在长文件名上失败(超过 MAX_PATH)

转载 作者:行者123 更新时间:2023-12-02 08:53:02 27 4
gpt4 key购买 nike

我有一个源文件要复制到目标位置:

aSource := 'C:\very_very_very_long_path\myfile.exe'; // over 260 chars
aTarget := 'C:\normal_path\myfile.exe';

if not(CopyFile(PChar(aSource), PChar(aTarget), false)) then
RaiseLastOSError;

此代码引发代码 3 的异常 - 这意味着 ERROR_PATH_NOT_FOUND .

目标和源路径存在,如果我将源重命名为较短的名称,它就可以工作。

如何复制具有长路径的文件(超过 MAX_PATH )?

最佳答案

Delphi 应遵循 Window convention当提供前缀 \\?\ 时允许长文件名。例如,将 "D:\very long path" 转换为 "\\?\D:\very long path"

此前缀仅在使用 API 的 Unicode 版本时适用,在本例中为 CopyFileW。如果您使用的是 Delphi 2009 或更高版本,则 CopyFile 映射到 CopyFileW。如果您使用早期版本,则需要显式调用 CopyFileW,并确保您传递的字符串是 UTF-16 编码的。

关于Delphi Copyfile 在长文件名上失败(超过 MAX_PATH),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44842530/

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