Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Проверка и коррекция имен папок для использования в файловой системе Windows в Delphi

Delphi , Файловая система , Директории

При работе с файловой системой 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




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Директории ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 20:47:44/0.0030820369720459/0