Показать сообщение отдельно
  #1  
Старый 18.12.2016, 17:39
Maxjuvefan Maxjuvefan вне форума
Прохожий
 
Регистрация: 24.08.2015
Сообщения: 30
Версия Delphi: delphi 2010
Репутация: 10
По умолчанию Осуществить копирование файлов без замены существующих через функцию SHFileOperation

Здравствуйте. Программа осуществляет копирование всех файлов и папок из одной указанной директории в другую. Копирование осуществляется посредством функции SHFileOperation:
Код:
function TMainForm.CopyF(fromDir, toDir: string): boolean;
var
   fos: TSHFileOpStruct;
   todir2: string;
begin
   todir2:=todir;
   ZeroMemory(@fos, SizeOf(fos));
   with fos do
   begin
      wFunc := FO_COPY;
      //fFlags := FOF_FILESONLY;
      fFlags:= FOF_SIMPLEPROGRESS;   //Показывать диалог с индикатором прогресса, но не показывать имен файлов
      fflags:= fflags or FOF_NOCONFIRMATION; //Отвечает "yes to all" на все запросы в ходе опеации
      fflags:= fflags or FOF_SILENT;  //Не показывать диалог с индикатором прогресса
      pFrom := PChar(fromDir + #0);
      pTo := PChar(toDir2);
   end;
   Result := (0 = ShFileOperation(fos));
end;
Пример использования
Код:
  CopyF(PChar (RootFolder.FromLabel.Caption), PChar (RootFolder.InLabel.Caption));
Если файл существует, то он будет заменен автоматически. Но мне этого не надо, так как копирование будет происходить автоматически через таймер, и массив файлов со временем будет увеличиваться. В папке, откуда надо копировать, каждый день будет создаваться папка с текущей датой, а в эту папку будут падать в течении суток файлы. Получается, что по истечению 10 дней программа будет перекопировать все папки с файлами за 10 дней, а это не нужно. Как сделать так, чтобы, если файлы уже существует, то копирование не происходило. Смотрел информацию по fFlags, но нужного не нашел, есть только FOF_RENAMEONCOLLISION - присваивает файлу новое имя при операциях копирования, перемещения или переименования, если файл с указанным именем уже существует, но мне нужно, чтобы он просто не копировался.
Ответить с цитированием