Jaroslav285
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте, столкнулся со следующей проблемой, программа должна перемещать файлы папки на флешке в папку 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; | Жду Ваших ответов, буду рад любой помощи, заранее спасибо. |