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; }
есть файл с названием "Став", по нажатию на кнопку в программе он перемещается из определённой папки в папку "рапорта и документы",
если в ней уже имеется с названием "Став", то перемещаемый файл переименовывается в Став(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; }