SHFileOperation을 사용하고 있으며 소스는 null로 구분 된 파일 이름의 pwidechar 일 수 있으며 전체가 double null로 끝납니다.delphi에서 null 구분 기호가있는 문자열을 만드는 방법
widechar 배열을 만들 수 있으며 필요한 정보를 보유하고 있지만 함수에 대해 pwidechar로 변환하려고하면 첫 번째 null에만 복사됩니다.
내가 뭘 잘못하고 있니? 이처럼
SHFileOperation을 사용하고 있으며 소스는 null로 구분 된 파일 이름의 pwidechar 일 수 있으며 전체가 double null로 끝납니다.delphi에서 null 구분 기호가있는 문자열을 만드는 방법
widechar 배열을 만들 수 있으며 필요한 정보를 보유하고 있지만 함수에 대해 pwidechar로 변환하려고하면 첫 번째 null에만 복사됩니다.
내가 뭘 잘못하고 있니? 이처럼
:
이const
null = #0;
var
FileNames: string;
...
FileNames := FileName1 + null + FileName2 + null;
그런 SHFileOperation
에 PWideChar(FileNames)
를 전달합니다.
델파이 문자열은 자동으로 Null로 끝나기 때문에 PWideChar(FileNames)
은 Null로 종료됩니다. 우리가 마지막에 넣는 하나의 널 터미네이터와 자동으로 추가 된 터미네이터.
넓은 문자에 대해 이야기 할 때 유니 코드 델파이를 사용한다고 가정합니다. 이전 델파이를 사용 중이고 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;
문제의 언어가 C 또는 C++ 인 경우 '\ 0'을 사용하는이 대답의 초기 버전에 사과드립니다. –
작동 중입니다 만 '\ 0'을 # 0으로 변경해야했습니다. – Daniel
답장하는 동안 편집 중이었던 것 같습니다. 이제는 모두 좋다 :) – Daniel