Delphi menyediakan banyak fungsi untuk operasi file, termasuk pembuatan dan penghapusan direktori, pengaturan direktori saat ini, mendapatkan direktori saat ini, dll. Penghapusan direktori mencakup fungsi (Fungsi) HapusDir dan prosedur (PRocedure) RmDir, tetapi mereka hanya dapat menghapus direktori kosong, dan tidak dapat menghapus direktori yang tidak kosong. Untuk menghapus seluruh pohon direktori (DelTree), Anda harus menulis program untuk menghapus subdirektori dan file di dalamnya.
File dalam direktori dapat dihapus dengan memanggil fungsi DeleteFile, tetapi file khusus (read-only, sistem, tersembunyi, dll.) tidak dapat dihapus secara efektif. Atribut file harus diubah menjadi file biasa sebelum dapat dihapus. Anda dapat menggunakan fungsi FileSetAttr untuk mengubah atribut file. Di sini, atribut file khusus disetel ke atribut file biasa (nilai atributnya adalah 0).
Mengingat struktur direktori pohon paling cocok untuk metode rekursif, algoritma rekursif digunakan di sini untuk mengimplementasikan fungsi DelTree. Berikut ini adalah prosedur implementasi spesifiknya.
//path adalah jalur direktori yang akan dihapus
//Mengembalikan True jika direktori berhasil dihapus, jika tidak, mengembalikan False
fungsi TForm1.Deltree (jalur : string): Boolean;
var
PencarianRec: TSearchRec;
mulai
//Tentukan apakah direktori tersebut ada
jika DirektoriAda(jalur) maka
mulai
//Masuk ke direktori dan hapus subdirektori dan file di dalamnya
oldDir := DapatkanCurrentDir;
ChDir(jalur);
//Temukan semua file di direktori
TemukanPertama(′??.??′, faAnyFile, SearchRec);
mengulang
//Ubah atribut file ke nilai atribut normal
FileSetAttr(SearchRec.Nama,0);
//Jika itu adalah direktori dan bukan . dan .., panggil DelTree secara rekursif
if(SearchRec.Attr dan faDirectory > 0) lalu
mulai
if(SearchRec.Name[1]<>′.′) lalu
jika(bukan Deltree(SearchRec.Name)) lalu
merusak;
akhir
//Jika itu adalah sebuah file, hapus secara langsung
kalau tidak
jika(bukan DeleteFile(SearchRec.Name))lalu
merusak ;
//Lanjutkan pencarian sampai akhir
sampai (FindNext(SearchRec)<>0) ;
//Kembali ke direktori induk dan hapus direktori tersebut
ChDir(′..′);
Hasil := ReMoveDir(jalur);
SetCurrentDir(oldDir);
akhir
kalau tidak
Hasil := Salah ;
akhir ;
Program ini dikompilasi dan dijalankan pada Windows 98 dan Delphi 4.0.