Здравствуйте.
Нужна помощь.
Как можно осуществить копирование файла, но с каждым разом с новым именем. Анализировала программа каждое имя и присваивала новое т.е. test1, test2, test3 и т.д.
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if CopyFile('C:\test\test.xls', 'D:\test\test1.xls', true) then
ShowMessage('файл скопирован.')
else
ShowMessage('ошибка копирования.');
end;
function MakeNewName(OldName: string): string;
var
i: Integer;
new_name, ext: string;
begin
ext := ExtractFileExt(OldName); // извлекаем расширение файла
new_name := Copy(OldName, 1, Length(OldName) - Length(ext)); // отделяем имя файла от расширения
i := 1;
Result := new_name + IntToStr(i) + ext; // формируем имя нового файла
while FileExists(Result) do // если файл с таким именем существует, то формируем новое
begin
Inc(i);
Result := new_name + IntToStr(i) + ext;
end;
end;
В Вашем случае использовать как-то так:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
...
file_for_copy := 'C:\test\test.xls';
if CopyFile(file_for_copy, MakeNewName(file_for_copy), true) then
ShowMessage('файл скопирован.')
else
ShowMessage('ошибка копирования.');
end;
Последний раз редактировалось dr. F.I.N., 27.01.2020 в 12:57.
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
i:=1;
while FileExists((Format('C:\test\копия\test%d.xls',[i]))) do inc(i);
CopyFile('С:\temp\test.xls', PAnsiChar(Format('C:\test\копия\test%d.xls',[i])), true);
end;