不兼容的类型 pwidechar 和字符串 ShellExecute

incompatible types pwidechar and string ShellExecute

我尝试使用 winrar 命令行压缩文件, 但是当我在命令行中添加一个变量时,我得到了这些错误 不兼容类型 'PWideChar' 和 'string' !

我将 sdate 变量转换为 WideChar,但它不起作用!!

我该如何解决!

procedure TForm1.Button1Click(Sender: TObject);
var
mydate : TDateTime;
sdate : string;
begin
mydate:= Now-7;
sdate := FormatDateTime('YYYY/mm/dd',mydate);
  ShellExecute(0, 'open', PChar('C:\Program Files\WinRAR\WinRar.exe'),
    'a -r -ta'+ PChar(sdate) +' D:\xlsFiles.rar D:\*.xls*', nil, SW_SHOW);
end;

ShellExecute 的文本参数是 PChar 类型。但是您为第 4 个参数提供了一个字符串。

错误信息很清楚。通过检查 ShellExecute 的声明,您知道有问题的参数是 PChar 类型(PWideChar 的别名)。并且错误消息告诉您您正在传递 string

而不是

'a -r -ta'+ PChar(sdate) +' D:\xlsFiles.rar D:\*.xls*'

及格

PChar('a -r -ta'+ sdate +' D:\xlsFiles.rar D:\*.xls*')