Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.09.2011, 09:18
Never74 Never74 вне форума
Прохожий
 
Регистрация: 06.07.2011
Сообщения: 18
Репутация: 10
Вопрос Зависание приложения после копирования каталогов! (Help)

Здравствуйте!

Столкнулся с проблемой копирования каталогов.

Использую готовую функцию:
Код:
function FullDirectoryCopy(SourceDir, TargetDir: string; StopIfNotAllCopied,OverWriteFiles: Boolean): Boolean; 
var 
SR: TSearchRec; 
I: Integer; 
begin 
Result := False; 
SourceDir := IncludeTrailingBackslash(SourceDir); 
TargetDir := IncludeTrailingBackslash(TargetDir); 
if not DirectoryExists(SourceDir) then 
Exit; 
if not ForceDirectories(TargetDir) then 
Exit;
I := FindFirst(SourceDir + '*', faAnyFile, SR);
try 
while I = 0 do 
begin 
if (SR.Name <> '') and (SR.Name <> '.') and (SR.Name <> '..') then
begin 
if SR.Attr = faDirectory then 
Result := FullDirectoryCopy(SourceDir + SR.Name, TargetDir + SR.NAME,StopIfNotAllCopied, OverWriteFiles) 
else if not (not OverWriteFiles and FileExists(TargetDir + SR.Name)) 
then 
Result := CopyFile(Pchar(SourceDir + SR.Name), Pchar(TargetDir + SR.Name), False)
else 
Result := True; 
if not Result and StopIfNotAllCopied then 
exit; 
end; 
I := FindNext(SR); 
end; 
finally 
SysUtils.FindClose(SR); 
end; 
end;

Выводом является:
Код:
procedure TForm1.But_Copy_DirClick(Sender: TObject);
var path,paths:string;
begin  
path:=(PChar(ExtractFilePath(ParamStr(0))+'От куда копировать'));
paths:=(PChar(ExtractFilePath(ParamStr(0))+'Куда копировать'));
FullDirectoryCopy(path,paths,True,False);
end;
Пробовал с указанием меток дисков, тоже не помогло, зависает.

Итог: Приложение копирует, но не всё, т.к. зависает. И что самое интересное. Если приложение весит, а я удаляю эти скопированные каталоги, она их по новой начинает копировать, но только уже часть.

Опыт: Раньше она работала нормально, пока не поставил другую версию delphi 7 и функцию удаления.

Функция удаления каталогов с файлами:
Код:
function DelDir(dir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc  := FO_DELETE;
    fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
    pFrom  := PChar(dir + #0);
  end;
  Result := (0 = ShFileOperation(fos));
end;
Админ: учимся пользоваться тегами!

Я думал у меня комп уже погнал, перезагрузил, но толку 0.
Убирал функцию удаления, тоже толку 0.
Я в тупике и не знаю уже, что делать.

Поделитесь пожалуйста опытом, советом полезным или подскажите как правильно сделать.
И заранее прошу без критики, т.к. критика не поможет решить данную проблему.

Последний раз редактировалось Admin, 21.09.2011 в 10:08.
Ответить с цитированием
  #2  
Старый 21.09.2011, 09:49
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

может место закончилось?
Ответить с цитированием
  #3  
Старый 21.09.2011, 11:24
Never74 Never74 вне форума
Прохожий
 
Регистрация: 06.07.2011
Сообщения: 18
Репутация: 10
Подмигивание

Pyro, это исключено. У меня места ещё 100 гигабайт.
Ответить с цитированием
  #4  
Старый 21.09.2011, 11:48
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Тогда можно во время зависания нажать Паузу в дельфи и пройтись пошагово
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter