![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
||||
|
||||
![]() Оффтоп:
Цитата:
![]() Появилась идея обмана - если папка-пустышка одна одинёшенька была, то создать её принудительно или пропустить это дело, если есть ещё файлы-папки, пусть ShFileOperation это делает дальше сама Код:
function MoveDir(fromDir, toDir: string): Boolean; var sr:TSearchRec; fos: TSHFileOpStruct; fl: TStrings; SrcBuf : TBuffer; dl: string; // добавлено begin fl:= TStringList.Create; if (fromDir <> '') and (fromDir[Length(fromDir)]<>'\') then fromDir:= fromDir+'\'; if FindFirst(fromDir + '*.*', faAnyFile, sr) = 0 then repeat if (sr.Name = '.') or (sr.name = '..') then Continue; if (sr.Attr and faDirectory) <> 0 then begin dl:= toDir + sr.Name; // добавлено fl.Add(fromDir + sr.Name); MoveDir(fromDir + sr.Name, toDir); end else if sr.Name <> ExtractFileName(ParamStr(0)) then fl.Add(fromDir + sr.Name); until FindNext(sr) <> 0; FindClose(sr); CreateBuffer( fl, SrcBuf ); ZeroMemory(@fos, SizeOf(fos)); with fos do begin wFunc := FO_MOVE; fFlags := FOF_FILESONLY or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR; pFrom := Pointer(SrcBuf); pTo := PChar(toDir) end; Result:= (0 = ShFileOperation(fos)); SrcBuf:= nil; if (fl.Count = 1) and (dl <> '') then ForceDirectories(dl); // добавлено fl.Free; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Electronic_Arts (15.04.2014)
|
#17
|
||||
|
||||
![]() Одним словом пришлось браться за отладчик и посмотреть что не так
оказалось вся проблема в этом Код:
s1:= ExtractFileDir(ParamStr(0)); s2:= ExtractFilepath(ExtractFileDir(ParamStr(0))); delete(s1, 1, length(s2)); ToS:=toDir+s1+'\'; createdir(tos); createdir(tos); Нужно было сперва создать директорию а потом перемешать туда все первоначальный код исправный перемешаются даже пустые папки оказалось дело не в WinAPI а у меня)))) ![]() ![]() Alegun спасибо за все... было приятно что не оставили одного в поле битвы.. Нет ничего не возможного. Вопрос только во времени... |