Delphi มีฟังก์ชันมากมายสำหรับการทำงานของไฟล์ รวมถึงการสร้างและการลบไดเร็กทอรี การตั้งค่าไดเร็กทอรีปัจจุบัน การรับไดเร็กทอรีปัจจุบัน ฯลฯ การลบไดเร็กทอรีรวมถึงฟังก์ชัน (ฟังก์ชัน) RemoveDir และโพรซีเดอร์ (PROcedure) RmDir แต่สามารถลบได้เฉพาะไดเร็กทอรีว่างเท่านั้น และไม่สามารถลบไดเร็กทอรีที่ไม่ว่างได้ หากต้องการลบแผนผังไดเร็กทอรีทั้งหมด (DelTree) คุณต้องเขียนโปรแกรมเพื่อลบไดเร็กทอรีย่อยและไฟล์ในไดเร็กทอรีนั้น
ไฟล์ในไดเร็กทอรีสามารถลบได้โดยการเรียกใช้ฟังก์ชัน DeleteFile แต่ไฟล์พิเศษ (อ่านอย่างเดียว ระบบ ซ่อนไว้ ฯลฯ) ไม่สามารถลบได้อย่างมีประสิทธิภาพ คุณลักษณะของไฟล์จะต้องเปลี่ยนเป็นไฟล์ธรรมดาก่อนจึงจะสามารถลบได้ คุณสามารถใช้ฟังก์ชัน FileSetAttr เพื่อเปลี่ยนแอตทริบิวต์ของไฟล์ได้ ที่นี่ คุณลักษณะของไฟล์พิเศษจะถูกตั้งค่าเป็นคุณลักษณะของไฟล์ธรรมดา (ค่าแอตทริบิวต์คือ 0)
เมื่อพิจารณาว่าโครงสร้างไดเร็กทอรีแบบต้นไม้เหมาะสมที่สุดสำหรับวิธีการแบบเรียกซ้ำ อัลกอริธึมแบบเรียกซ้ำจึงถูกนำมาใช้ที่นี่เพื่อใช้ฟังก์ชัน DelTree ต่อไปนี้เป็นขั้นตอนการดำเนินการเฉพาะ
//path คือเส้นทางไดเร็กทอรีที่ต้องการลบ
//คืนค่า True หากลบไดเร็กทอรีสำเร็จ มิฉะนั้นจะคืนค่า False
ฟังก์ชัน TForm1.Deltree (เส้นทาง : สตริง): บูลีน;
var
SearchRec: TSearchRec;
เริ่ม
//ตรวจสอบว่ามีไดเร็กทอรีอยู่หรือไม่
ถ้า DirectoryExists(path) แล้ว
เริ่ม
//ป้อนไดเร็กทอรีและลบไดเร็กทอรีย่อยและไฟล์ในนั้น
oldDir := GetCurrentDir;
ChDir(เส้นทาง);
//ค้นหาไฟล์ทั้งหมดในไดเร็กทอรี
FindFirst(′??.??′, faAnyFile, SearchRec);
ทำซ้ำ
//แก้ไขแอตทริบิวต์ของไฟล์ให้เป็นค่าแอตทริบิวต์ปกติ
FileSetAttr(SearchRec.Name,0);
//หากเป็นไดเร็กทอรีไม่ใช่ . และ .. ให้เรียก DelTree ซ้ำ
ถ้า (SearchRec.Attr และ faDirectory > 0) แล้ว
เริ่ม
if(SearchRec.Name[1]<>′.′) แล้ว
ถ้า (ไม่ใช่ Deltree (SearchRec.Name)) แล้ว
หยุดพัก;
จบ
//หากเป็นไฟล์ให้ลบออกโดยตรง
อื่น
ถ้า(ไม่ใช่ DeleteFile(SearchRec.Name))แล้ว
หยุดพัก ;
//ค้นหาต่อจนจบ
จนกระทั่ง (FindNext(SearchRec)<>0) ;
// กลับไปที่ไดเร็กทอรีหลักและลบไดเร็กทอรี
ChDir(′..′);
ผลลัพธ์ := ReMoveDir (เส้นทาง);
SetCurrentDir(oldDir);
จบ
อื่น
ผลลัพธ์ := เท็จ ;
จบ ;
โปรแกรมนี้รวบรวมและส่งผ่านภายใต้ Windows 98 และ Delphi 4.0