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

Проверка имени файла на наличие запрещённых символов

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

Получение родительской директории указанной папки

Автор: VID
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение родительской директории указанной папки

Функция GetParentDir возвращает родительскую директорию папки, путь к которой
задан в параметре StartDirectory. Если папки StartDirectory не существует, то
функция возвратит пустую строку.

Зависимости: system, filectrl, UBPFD.TrimEx
Автор:       VID, vidsnap@mail.ru, ICQ:132234868, Махачкала
Copyright:   VID
Дата:        25 апреля 2002 г.
***************************************************** }

function GetParentDir(StartDirectory: string): string;
var
  x: Integer;
begin
  Result := '';
  if DirectoryExists(StartDirectory) = False then
    exit;
  StartDirectory := TrimEx(StartDirectory, '\');
  if Length(StartDirectory) = 0 then
    EXIT;
  X := Length(StartDirectory) + 1;
  repeat
    X := X - 1;
  until (StartDirectory[X] = '\') or (X = 1);
  Result := Copy(StartDirectory, 1, X);
  if Result[Length(Result)] <> '\' then
    Result := Result + '\';
  if DirectoryExists(Result) = False then
  begin
    Result := '';
    EXIT;
  end;
end;

Функция Delphi под именем GetParentDir, которая возвращает родительскую папку для заданной директории пути. Функция принимает одиночный параметр StartDirectory, который является путем директории, для которой нужно найти родительскую папку.

Шаг за шагом, функция выполняет следующие действия:

  1. Инициализирует переменную результата в пустую строку.
  2. Проверяет, существует ли StartDirectory с помощью функции DirectoryExists из модуля System. Если она не существует, функция выходит с пустым результатом.
  3. Триммирование любых trailing backslashes (\) из пути StartDirectory с помощью функции TrimEx из модуля UBPFD.
  4. Проверяет, является ли trimmed StartDirectory пустой строкой. Если это так, функция выходит с пустым результатом.
  5. Инициализирует переменную X в длину StartDirectory плюс 1.
  6. Цикл, который продолжается до тех пор, пока X не будет равно 0 или символ на индексе X в StartDirectory не будет backslash (\). В каждом итерации цикла уменьшает X на 1.
  7. Когда цикл заканчивается, использует функцию Copy, чтобы извлечь подстроку от начала StartDirectory до последнего backslash (\) или первого символа (если не было найдено backslashes). Это является путем родительской папки.
  8. Если полученный путь родительской папки не заканчивается на backslash (\), добавляет один к нему.
  9. Проверяет, существует ли полученный путь родительской папки с помощью функции DirectoryExists снова. Если она не существует, переменная результата устанавливается в пустую строку и функция выходит.

Альтернативное реализация этой функции с использованием регулярных выражений:

function GetParentDir(StartDirectory: string): string;
var
  RE: TRegExpr;
begin
  Result := '';
  if not DirectoryExists(StartDirectory) then
    Exit;

  RE := TRegExpr.Create('\[^\\]+$');
  RE.Match(StartDirectory);
  Result := RE.CapturedGroup(1);

  if not DirectoryExists(Result) then
    Result := '';
end;

В этом реализации функции используется регулярное выражение, чтобы найти последний разделитель директории (\) в пути StartDirectory, и извлечь подстроку до этого пункта как путь родительской папки. Компонент TRegExpr из модуля RegExpr используется для компиляции и выполнения регулярного выражения.

Статья описывает функцию GetParentDir, которая возвращает родительскую директорию указанной папки, очищая путь от запрещенных символов и проверяя существование директории.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:14:16/0.0054149627685547/1