Войти

Показать полную графическую версию : Помогите с заменой файла (Delphi)


Eirstream
19-08-2021, 19:00
Есть часть кода, в целом, работает все как нужно, но есть одно но
есть файл с названием "Став", по нажатию на кнопку в программе он перемещается из определённой папки в папку "рапорта и документы",
если в ней уже имеется с названием "Став", то перемещаемый файл переименовывается в Став(1)
Проблема заключается в том, что перемещаемый файл не только переименовываться и копируется,
но и заменяет файл с названием "Став".
Получается два одинаковых файла - Став и Став(1).
Мне необходимо, чтобы файл, который уже есть в папке, не заменялся

​ Filelistbox1.Directory := 'D:\Reporter\Рапорта';
​ ​ Filelistbox1.Mask := '*.pdf';

​ ​ ​ ​ ​ ​ begin
​ ​ ​ ​ ​ if DirectoryExists('C:\Users\Dej-adm\Desktop\Мои файлы\Прочее\Рапорта и документы') then
​ ​ ​ ​ ​ else
​ ​ ​ ​ ​ ForceDirectories('C:\Users\Dej-adm\Desktop\Мои
Файлы\Прочее\Рапорта и документы');

​ ​ ​ ​ Dir2 := 'C:\Users\Dej-adm\Desktop\Мои файлы\Прочее\Рапорта и
документы\' ;
​ ​ for i := 0 to FileListBox1.Items.Count - 1 do
​ ​ ​ ​ ​ ​ ​ ​ begin
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ if FileExists(FileListBox1.Items.Strings[i]) then
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ begin
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ NewFile := Dir2 + '\' +
ExtractFileName(FileListBox1.Items.Strings[i]) ;
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ Counter := 1;
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ while FileExists(NewFile) do
​ ​ begin
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ NewFile := dir2 + '\' +
ExtractFileName(FileListBox1.Items.Strings[i]);
​ ​ NewFile := ChangeFileExt(NewFile, '') + '('+ IntToStr(Counter)+')' +​
ExtractFileExt(NewFile) ;
​ ​ inc(Counter);
​ ​ end;
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ CopyFile(PChar(FileListBox1.Items.Strings[i]), PChar
(NewFile), false) ;
​ ​ ​ ​ ​ ​ ​ ​ end;


​ ​ ​ ​это я так пробовал ​ ​
​ ​ {​ ​ ​ ​ begin
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ r := FindFirst('D:\Reporter\Рапорта\*.pdf',
faAnyFile, sr);
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ while r = 0 do
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ begin
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ DeleteFile('D:\Reporter\Рапорта\' + sr.Name);
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ r := FindNext(sr);
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ end;
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ end;
​ ​ ​ ​ ​ ​ ​ ​ end;
​ ​ ​ ​ ​ ​ ​ ​ end;​ ​ }




© OSzone.net 2001-2012