|
|
Регистрация | << Правила форума >> | 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 спасибо за все... было приятно что не оставили одного в поле битвы.. Нет ничего не возможного. Вопрос только во времени... |