Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2018, 22:47   #1
Taras2018
Пользователь
 
Аватар для Taras2018
 
Регистрация: 13.01.2018
Сообщений: 47
По умолчанию Переименовать файлы при копировании

Код, который по списку, находящемуся в ListBox копирует файлы в выбранную пользователем папку. В списке файлов могут находиться файлы с одинаковыми именами, но находящиеся в разных директориях.

Как реализовать такой алгоритм >>> Если файл уже существует в целевой папке, то при копировании добавить к имени файла символ "1"?

Копирование реализовано так >>>
Код:
procedure TForm1.Button5Click(Sender: TObject);
    var
      i   : integer;
      dir : string;
    begin
      if SelectDirectory ('Выбор папки, Куда копировать:', 'D:\,C:\', dir) then
        begin

          for i := 0 to ListBox1.Items.Count-1 do
            begin
              if FileExists (ListBox1.Items.Strings[i]) then
                CopyFile (PChar(ListBox1.Items.Strings[i]), PChar(dir + '\' + ExtractFileName (ListBox1.Items.Strings[i])), false);

            end;
        end;
    end;
Taras2018 вне форума Ответить с цитированием
Старый 03.06.2018, 23:15   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
if FileExists (ListBox1.Items.Strings[i]) then
begin
  i_FileNumber := 0;
  While FileExists (dir + '\' + ExtractFileName (ListBox1.Items.Strings[i])) do
    inc(i_FileNumber);
  if i_FileNumber > 0 then
    CopyFile (PChar(ListBox1.Items.Strings[i]), PChar(dir + '\' + ExtractFileName (ListBox1.Items.Strings[i]) + IntToStr(i_FileNumber )), false)
  else
    CopyFile (PChar(ListBox1.Items.Strings[i]), PChar(dir + '\' + ExtractFileName (ListBox1.Items.Strings[i])), false)
end;
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 03.06.2018, 23:51   #3
Taras2018
Пользователь
 
Аватар для Taras2018
 
Регистрация: 13.01.2018
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Код:
if FileExists (ListBox1.Items.Strings[i]) then
begin
  i_FileNumber := 0;
  While FileExists (dir + '\' + ExtractFileName (ListBox1.Items.Strings[i])) do
    inc(i_FileNumber);
  if i_FileNumber > 0 then
    CopyFile (PChar(ListBox1.Items.Strings[i]), PChar(dir + '\' + ExtractFileName (ListBox1.Items.Strings[i]) + IntToStr(i_FileNumber )), false)
  else
    CopyFile (PChar(ListBox1.Items.Strings[i]), PChar(dir + '\' + ExtractFileName (ListBox1.Items.Strings[i])), false)
end;
Благодарю, разобрался.
Taras2018 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переименовать файлы nibufep Общие вопросы Delphi 17 28.01.2015 10:18
Не получается правильно переименовать файлы Janger Общие вопросы Delphi 7 20.02.2014 22:41
Переименовать файлы в папке FakeGen Общие вопросы Delphi 19 04.08.2011 10:34
Переименовать файлы в папке (с условием) Gvaridos Microsoft Office Excel 3 01.11.2010 11:31
Переименовать файлы по списку!? jungo Microsoft Office Excel 14 19.05.2008 11:43