{ **** 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 thenbegin
Result := '';
EXIT;
end;
end;
Функция Delphi под именем GetParentDir, которая возвращает родительскую папку для заданной директории пути. Функция принимает одиночный параметр StartDirectory, который является путем директории, для которой нужно найти родительскую папку.
Шаг за шагом, функция выполняет следующие действия:
Инициализирует переменную результата в пустую строку.
Проверяет, существует ли StartDirectory с помощью функции DirectoryExists из модуля System. Если она не существует, функция выходит с пустым результатом.
Триммирование любых trailing backslashes (\) из пути StartDirectory с помощью функции TrimEx из модуля UBPFD.
Проверяет, является ли trimmed StartDirectory пустой строкой. Если это так, функция выходит с пустым результатом.
Инициализирует переменную X в длину StartDirectory плюс 1.
Цикл, который продолжается до тех пор, пока X не будет равно 0 или символ на индексе X в StartDirectory не будет backslash (\). В каждом итерации цикла уменьшает X на 1.
Когда цикл заканчивается, использует функцию Copy, чтобы извлечь подстроку от начала StartDirectory до последнего backslash (\) или первого символа (если не было найдено backslashes). Это является путем родительской папки.
Если полученный путь родительской папки не заканчивается на backslash (\), добавляет один к нему.
Проверяет, существует ли полученный путь родительской папки с помощью функции DirectoryExists снова. Если она не существует, переменная результата устанавливается в пустую строку и функция выходит.
Альтернативное реализация этой функции с использованием регулярных выражений:
В этом реализации функции используется регулярное выражение, чтобы найти последний разделитель директории (\) в пути StartDirectory, и извлечь подстроку до этого пункта как путь родительской папки. Компонент TRegExpr из модуля RegExpr используется для компиляции и выполнения регулярного выражения.
Статья описывает функцию GetParentDir, которая возвращает родительскую директорию указанной папки, очищая путь от запрещенных символов и проверяя существование директории.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS