2012-08-29 82 views
2

我正在使用SHFileOperation,並且源可以是一個pwidechar,文件名之間用null隔開,整個事件以雙空字符結束。在delphi中如何創建一個帶空分隔符的字符串

我可以創建一個widechar數組,它擁有我需要的信息,但是當我嘗試將函數轉換爲pwidechar時,它只複製到第一個null。

我在做什麼錯?

回答

15

像這樣:

const 
    null = #0; 

var 
    FileNames: string; 
... 
FileNames := FileName1 + null + FileName2 + null; 

然後傳遞到PWideChar(FileNames)SHFileOperation

由於Delphi字符串自動以null結尾,因此PWideChar(FileNames)以雙空字符結尾。我們放置一個空終止符,並自動添加一個。

請注意,我假設您使用的是Unicode Delphi,因爲您會談論寬字符。如果您使用的是較舊的Delphi,並且正在調用SHFileOperationW,則聲明FileNamesWideString

更有可能你有一個文件列表,比如說一個字符串列表。對待他們是這樣的:

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; 
+2

我對使用'\ 0'這個答案的早期版本表示歉意,如果有問題的語言是C或C++ !!這會很好! –

+0

它正在工作,但我必須將'\ 0'更改爲#0 – Daniel

+0

糟糕,您在編輯時正在回覆。現在都很好:) – Daniel

相關問題