Здравствуйте, столкнулся со следующей проблемой, программа должна перемещать файлы папки на флешке в папку Backup.
Когда флешка в файловой системе FAT32 все работает правильно, а если флешка в файловой системе NTFS, то файлы перемещаются без проблем, а папки названия которых в кириллице или в верхнем регистре английской раскладки не перемещаются никак, перечитал много статей на тему shfileopstruct, но по своей проблеме вразумительного ответа так и не нашел, поэтому прошу Вас помочь разобраться в данной проблеме, свой код добавляю ниже.
Код:
procedure TForm1.WMDeviceChange(var Msg: TMessage);
var pDBT:P_DEV_BROADCAST_HDR;
FileOp: TSHFileOpStruct;
vVolumeName, vFileSystemName: array [0..MAX_PATH-1] of Char;
vVolumeSerialNo, vMaxLength, vFileSystemFlags: LongWord;
const
begin
case Msg.WParam of
$8000:
begin
Memo1.Lines.Clear;
for s:= 'D' to 'J' do begin
if (GetDriveType(PChar(s+':\')) = DRIVE_REMOVABLE)
then begin memo1.Lines.Add(s+':\'); //Получение списка вставленных флешек при подключении USB-Flash
pDBT := Pointer(Msg.LParam);
if pDBT<>nil then
if (pDBT^.dbch_devicetype=$00000002) then begin //проверка на тип устройства если флешка то
try
if not DirectoryExists(s+':'+'\Backup') then begin // Сама структура с которой проблемы
ZeroMemory(@FileOp, SizeOf(TSHFileOpStruct));
FileOp.Wnd:=Handle;
FileOp.wFunc:=FO_MOVE;// FO_MOVE FO_COPY FO_DELETE FO_RENAME
FileOp.pFrom:=PChar(s+':\'+'*.*'+#0) ;
FileOp.pTo:=PChar(s+':\'+'Backup'+#0);
FileOp.fFlags:=0+FOF_NOCONFIRMMKDIR;
FileOp.fFlags:=FOF_NOERRORUI or FOF_NOCONFIRMATION or fof_silent;
FileOp.hNameMappings :=0;
SHFileOperationW(FileOp);
end ; except
end;
end;
end;
end;
end;
$8004:
end;
end;
Жду Ваших ответов, буду рад любой помощи, заранее спасибо.