2016-05-09 70 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),但這個特定的文檔是完全垃圾....... –

相關問題