2016-05-09 44 views
1

我尽量压缩使用winrar命令行, 文件但是当我在命令行中加一个变量,我得到这些错误 不兼容的类型“PWideChar”和“串”不兼容的类型pwidechar和字符串的ShellExecute

我转换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; 
+1

'ShellExecute'以有利于'ShellExecuteEx'的弃用,后者在一个健全的方式能够报告错误。但是,由于您正在执行新的进程,因此最好调用'CreateProcess'。 –

+0

你可能想跳过调用另一个进程,并使用ZIP库,而不是像内置的TZipFile,Abbrevia,... –

回答

3

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*') 
+0

谢谢,这是工作, 但什么是PChar类型和PWideChar之间的尊重? 因为这两个作品! –

+0

两者都是指向Unicode字符的指针(如果您有D2009 +)。 –

+0

在第二段中,我说'PChar'是'PWideChar'的别名。它也被记录(http://docwiki.embarcadero.com/Libraries/en/System.PChar),但这个特定的文档是完全垃圾....... –

相关问题