私はSHFileOperationを使用していますが、ソースはファイル名がnullで区切られ、全体がdoublenullで終了するpwidecharにすることができます。
widecharの配列を作成でき、必要な情報を保持しますが、関数をpwidecharに変換しようとすると、最初のnullにのみコピーされます。
私は何が間違っているのですか?
私はSHFileOperationを使用していますが、ソースはファイル名がnullで区切られ、全体がdoublenullで終了するpwidecharにすることができます。
widecharの配列を作成でき、必要な情報を保持しますが、関数をpwidecharに変換しようとすると、最初のnullにのみコピーされます。
私は何が間違っているのですか?
このような:
const
null = #0;
var
FileNames: string;
...
FileNames := FileName1 + null + FileName2 + null;
次に、に渡しPWideChar(FileNames)
ますSHFileOperation
。
Delphi文字列は自動的にヌルで終了するため、ダブルヌルPWideChar(FileNames)
で終了します。最後に配置した1つのヌルターミネータと、自動的に追加された1つのヌルターミネータ。
ワイド文字について話しているので、UnicodeDelphiを使用していると想定していることに注意してください。古い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;