2
我正在使用SHFileOperation,並且源可以是一個pwidechar,文件名之間用null隔開,整個事件以雙空字符結束。在delphi中如何創建一個帶空分隔符的字符串
我可以創建一個widechar數組,它擁有我需要的信息,但是當我嘗試將函數轉換爲pwidechar時,它只複製到第一個null。
我在做什麼錯?
我正在使用SHFileOperation,並且源可以是一個pwidechar,文件名之間用null隔開,整個事件以雙空字符結束。在delphi中如何創建一個帶空分隔符的字符串
我可以創建一個widechar數組,它擁有我需要的信息,但是當我嘗試將函數轉換爲pwidechar時,它只複製到第一個null。
我在做什麼錯?
像這樣:
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;
我對使用'\ 0'這個答案的早期版本表示歉意,如果有問題的語言是C或C++ !!這會很好! –
它正在工作,但我必須將'\ 0'更改爲#0 – Daniel
糟糕,您在編輯時正在回覆。現在都很好:) – Daniel