Как сделать калькулятор в Delphi?

Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.

Как Delphi реализует многоплатформенную разработку?

Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...

Удаление непустого каталога вместе с подкаталогами

Советы » Каталоги » Удаление непустого каталога вместе с подкаталогами

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Удаление непустого каталога вместе с подкаталогами

Удаление подкаталогов рекурсивное - функция вызывает саму себя.
Описание назначения агрументов:

-DeleteAllFilesAndFolder - если TRUE то функцией будут предприняты
попытки для установки атрибута faArchive любому файлу или папке
перед его(её) удалением;

-StopIfNotAllDeleted - если TRUE то работа функции моментально
прекращается если возникла ошибка удаления хотя бы одного файла или папки;

-RemoveRoot - если TRUE, указывает на необходимость удаления корня.

Зависимости: FileCtrl, SysUtils
Автор:       lipskiy, lipskiy@mail.ru, ICQ:51219290, Санкт-Петербург
Copyright:   Собственное написание (lipskiy)
Дата:        26 апреля 2002 г.
***************************************************** }

function

FullRemoveDir(Dir: string

; DeleteAllFilesAndFolders, StopIfNotAllDeleted, RemoveRoot: boolean): Boolean; var

i: Integer; SRec: TSearchRec; FN: string

; begin

Result := False; if

not

DirectoryExists(Dir) then

exit; Result := True; // Добавляем слэш в конце и задаем маску - "все файлы и директории" Dir := IncludeTrailingBackslash(Dir); i := FindFirst(Dir + '*', faAnyFile, SRec); try

while

i = 0 do

begin

// Получаем полный путь к файлу или директорию FN := Dir + SRec.Name; // Если это директория if

SRec.Attr = faDirectory then

begin

// Рекурсивный вызов этой же функции с ключом удаления корня if

(SRec.Name <> '') and

(SRec.Name <> '.') and

(SRec.Name <> '..') then

begin

if

DeleteAllFilesAndFolders then

FileSetAttr(FN, faArchive); Result := FullRemoveDir(FN, DeleteAllFilesAndFolders, StopIfNotAllDeleted, True); if

not

Result and

StopIfNotAllDeleted then

exit; end

; end

else

// Иначе удаляем файл begin

if

DeleteAllFilesAndFolders then

FileSetAttr(FN, faArchive); Result := SysUtils.DeleteFile(FN); if

not

Result and

StopIfNotAllDeleted then

exit; end

; // Берем следующий файл или директорию i := FindNext(SRec); end

; finally

SysUtils.FindClose(SRec); end

; if

not

Result then

exit; if

RemoveRoot then

// Если необходимо удалить корень - удаляем if

not

RemoveDir(Dir) then

Result := false; end

;

Пример использования:

FullRemoveDir('C:a', true, true, true);
// Полное удаление папки C:a со всем её содержимым,
// и с последующим удалением самой c:a

Другое по теме:

Категории

Статьи

Советы

Copyright © 2024 - All Rights Reserved - www.delphirus.com