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

Delphi Sources



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

 
 
Опции темы Поиск в этой теме Опции просмотра
  #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 - присваивает файлу новое имя при операциях копирования, перемещения или переименования, если файл с указанным именем уже существует, но мне нужно, чтобы он просто не копировался.

Последний раз редактировалось Maxjuvefan, 18.12.2016 в 17:53.
Ответить с цитированием
 


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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