在delphi中如何使用null分隔符创建字符串

时间:2012-08-29 15:46:38

标签: string delphi null shfileoperation

我正在使用SHFileOperation,源可以是一个pwidechar,文件名以null分隔,整个事件以double null结尾。

我可以创建一个widechar数组,它保存了我需要的信息但是当我尝试转换为pwidechar函数时,它只复制到第一个null。

我做错了什么?

1 个答案:

答案 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;