Delphi fornece muitas funções para operações de arquivo, incluindo criação e exclusão de diretório, configuração do diretório atual, obtenção do diretório atual, etc. A exclusão de diretório inclui a função (Function) RemoveDir e o procedimento (PRocedure) RmDir, mas eles só podem excluir diretórios vazios e não podem excluir diretórios não vazios. Para excluir toda a árvore de diretórios (DelTree), você deve escrever um programa para excluir os subdiretórios e arquivos contidos nela.
Os arquivos no diretório podem ser excluídos chamando a função DeleteFile, mas arquivos especiais (somente leitura, sistema, ocultos, etc.) não podem ser excluídos efetivamente. Você pode usar a função FileSetAttr para alterar os atributos do arquivo. Aqui, os atributos do arquivo especial são definidos como atributos de arquivo comuns (o valor do atributo é 0).
Considerando que a estrutura de diretórios em árvore é mais adequada para métodos recursivos, algoritmos recursivos são usados aqui para implementar a função DelTree. A seguir está o procedimento de implementação específico.
//path é o caminho do diretório a ser excluído
//Retorna True se o diretório for excluído com sucesso, caso contrário retorna False
função TForm1.Deltree (caminho: string): Boolean;
var
SearchRec: TSearchRec;
começar
//Determina se o diretório existe
se DirectoryExists(caminho) então
começar
//Entre no diretório e exclua os subdiretórios e arquivos nele contidos
oldDir := GetCurrentDir;
ChDir(caminho);
//Encontra todos os arquivos no diretório
FindFirst(′??.??′, faAnyFile, SearchRec);
repita
//Modifica os atributos do arquivo para valores normais de atributos
FileSetAttr(SearchRec.Nome,0);
//Se for um diretório e não .., chame DelTree recursivamente.
if(SearchRec.Attr e faDirectory > 0) então
começar
if(SearchRec.Nome[1]<>′.′) então
if(não Deltree(SearchRec.Name)) então
quebrar;
fim
//Se for um arquivo, exclua-o diretamente
outro
if(não DeleteFile(SearchRec.Name))então
quebrar ;
//Continua pesquisando até o final
até (FindNext(SearchRec)<>0) ;
//Volte para o diretório pai e exclua o diretório
ChDir(′..′);
Resultado: = ReMoveDir (caminho);
SetCurrentDir(antigoDir);
fim
outro
Resultado:= Falso;
fim ;
Este programa é compilado e aprovado no Windows 98 e Delphi 4.0.