我正在使用SHFileOperation,源可以是一个pwidechar,文件名以null分隔,整个事件以double null结尾。
我可以创建一个widechar数组,它保存了我需要的信息但是当我尝试转换为pwidechar函数时,它只复制到第一个null。
我做错了什么?
答案 0 :(得分:15)
像这样:
const
null = #0;
var
FileNames: string;
...
FileNames := FileName1 + null + FileName2 + null;
然后将PWideChar(FileNames)
传递给SHFileOperation
。
因为Delphi字符串是自动以null结尾的,所以PWideChar(FileNames)
是双空终止的。我们放在最后的一个空终止符,并自动添加一个。
请注意,我假设您使用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;