При работе с файловой системой Windows важно учитывать, что существуют определенные ограничения на имена папок. Например, некоторые символы и слова, такие как 'CON', 'COM', 'LPT', 'NUL', 'PRN', 'AUX', являются недопустимыми. В рамках данной статьи мы рассмотрим, как проверить и, при необходимости, скорректировать имя папки, чтобы оно соответствовало требованиям файловой системы Windows, используя язык программирования Object Pascal в среде разработки Delphi.
Проверка имени папки на валидность
Для начала, рассмотрим функцию проверки имени папки на валидность. В Delphi нет встроенной функции для этой задачи, но мы можем использовать стандартные возможности языка для реализации такой проверки.
uses
StrUtils; // Подключаем модуль для работы со строками
function IsValidFolderName(const FolderName: string): Boolean;
var
IllegalNames: array[0..1] of string = ('CON', 'COM', 'LPT', 'NUL', 'PRN', 'AUX');
i: Integer;
begin
// Проверяем на наличие недопустимых символов
if ContainsText(FolderName, [Chr(0):Chr(31), Chr(124), '/', '\', ':', '*', '?', '"', '<', '>', '|']) then
Exit(False);
// Проверяем на наличие недопустимых слов (всегда в верхнем регистре)
for i := Low(IllegalNames) to High(IllegalNames) do
if ContainsText(FolderName, IllegalNames[i], [tfIgnoreCase]) then
Exit(False);
// Если проверки пройдены успешно, имя считается валидным
Result := True;
end;
Коррекция имени папки
Если имя не прошло проверку, можно скорректировать его, удалив недопустимые символы и заменив недопустимые слова на допустимые аналоги.
function CorrectFolderName(const FolderName: string): string;
var
IllegalNames: array[0..1] of string = ('CON', 'COM', 'LPT', 'NUL', 'PRN', 'AUX');
i, j: Integer;
begin
// Удаляем недопустимые символы
Result := ChangeFileExt(FolderName, '');
// Заменяем недопустимые слова на допустимые аналоги
for i := Low(IllegalNames) to High(IllegalNames) do
if ContainsText(Result, IllegalNames[i], [tfIgnoreCase]) then
begin
j := Length(IllegalNames[i]);
Result := Copy(Result, 1, Pos(IllegalNames[i], Result) - 1) + 'Folder' + Copy(Result, Pos(IllegalNames[i], Result) + j, Length(Result));
end;
// Удаляем лишние пробелы и приводим к нижнему регистру для стандартного вида имен
Result := Trim(Result);
Result := LowerCase(Result);
end;
Создание папки с использованием корректированного имени
После проверки и коррекции имени папки, можно приступить к его созданию.
uses
SysUtils; // Подключаем модуль для работы с системными функциями
var
FolderPath: string;
begin
FolderPath := CorrectFolderName('Invalid\Folder/Name'); // Пример невалидного имени
if IsValidFolderName(FolderPath) then
if not DirectoryExists(FolderPath) then
MkDir(FolderPath) // Создание папки
else
ShowMessage('Папка уже существует');
end;
Используя представленные функции, вы можете убедиться, что имя папки соответствует требованиям файловой системы Windows и корректно создать папку с использованием Delphi.
Приведены функции для проверки и коррекции имен папок в Delphi, чтобы они соответствовали требованиям файловой системы Windows.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS