Delphi. Алгоритмы. Создание уникального имени через добавление номера в конце в скобках. Например SomeFile(1), SomeFile(2) и др.

Итак, пусть у нас в некоторой директории находится файл SomeFile, сделаем так, чтобы при добавлении следующего файла с именем SomeFile, в директории оказался файл SomeFile(1), SomeFile(2), SomeFile(3). При отсутствии этого файла в директорию копируется просто файл. Данная задача возникла в результате разработки решения для передачи файлов по HTTP протоколу. Нужно было сделать так, чтобы при каждой передаче файл в обязательном порядке копировался и сохранялся под новым именем в любом случае, даже если он там уже есть. Не перезаписывал существующий, а создавал новый, с каким-то другим именем.

Первоначально задача показалась мне тривиальной, пока я не начал ее решать. Впоследствии я понял, что там множество других маленьких задач. Вот что у меня получилось.

Основная функция

Здесь у нас список имен, с которыми нужно сравнивать, это имена из директории. А также само имя, которое должно быть уникальным.

Эта функция опирается на следующую – добавление номера в скобки на конце

Нам также нужно научиться выделять строку без расширения

Нам также нужно научиться выделять строку без последних скобок с номером. Это можно сделать простым выделением подстроки

И последнее -научиться вытаскивать номер из скобок на конце. Тут помогли регулярные выражения

ЮНИТ ПОЛНОСТЬЮ

 

This entry was posted in Delphi, Алгоритмы. Bookmark the permalink.