我正在使用 SHFileOperation ,源可以是 pwidechar ,文件名由 null 分隔,整个内容以双 null 结尾。
我可以创建一个widechar 数组,它包含我需要的信息,但是当我尝试将函数转换为pwidechar 时,它只复制到第一个null。
我究竟做错了什么?
我正在使用 SHFileOperation ,源可以是 pwidechar ,文件名由 null 分隔,整个内容以双 null 结尾。
我可以创建一个widechar 数组,它包含我需要的信息,但是当我尝试将函数转换为pwidechar 时,它只复制到第一个null。
我究竟做错了什么?
像这样:
const
null = #0;
var
FileNames: string;
...
FileNames := FileName1 + null + FileName2 + null;
然后PWideChar(FileNames)
传给SHFileOperation
.
因为 Delphi 字符串自动以 null 结尾,PWideChar(FileNames)
所以是双 null 结尾的。我们把一个空终止符放在最后,然后自动添加一个。
请注意,我假设您使用的是 Unicode Delphi,因为您谈论的是宽字符。如果您使用的是较旧的 Delphi,并且正在调用SHFileOperationW
,则声明FileNames
为WideString
.
更有可能你有一个文件列表,比如一个字符串列表。像这样对待他们:
var
FileNames: string;
...
if FileList.Count=0 then
FileNames := null
else
begin
FileNames := '';
for i := 0 to FileList.Count-1 do
FileNames := FileNames + FileList[i] + null;
end;