توفر دلفي العديد من الوظائف لعمليات الملفات، بما في ذلك إنشاء الدليل وحذفه، وتعيين الدليل الحالي، والحصول على الدليل الحالي، وما إلى ذلك. يتضمن حذف الدليل الوظيفة (الوظيفة) RemoveDir والإجراء (PRocedure) RmDir، لكن يمكنهم حذف الدلائل الفارغة فقط، ولا يمكنهم حذف الدلائل غير الفارغة. لحذف شجرة الدليل بأكملها (DelTree)، يجب عليك كتابة برنامج لحذف الدلائل الفرعية والملفات الموجودة فيها.
يمكن حذف الملفات الموجودة في الدليل عن طريق استدعاء الوظيفة RemoveFile، لكن الملفات الخاصة (للقراءة فقط، النظام، المخفية، وما إلى ذلك) لا يمكن حذفها بشكل فعال. يجب تغيير سمات الملف إلى ملفات عادية قبل أن يتم حذفها. يمكنك استخدام الدالة FileSetAttr لتغيير سمات الملف. هنا، يتم تعيين سمات الملف الخاص على سمات الملف العادي (قيمة السمة هي 0).
بالنظر إلى أن بنية دليل الشجرة هي الأكثر ملاءمة للطرق العودية، يتم استخدام الخوارزميات العودية هنا لتنفيذ وظيفة DelTree. فيما يلي إجراء التنفيذ المحدد.
// المسار هو مسار الدليل المراد حذفه
// يُرجع صحيحًا إذا تم حذف الدليل بنجاح، وإلا يُرجع خطأ
الدالة TForm1.Deltree (المسار: السلسلة): منطقية؛
فار
سيرتش ريك: تسيرتش ريك؛
يبدأ
// تحديد ما إذا كان الدليل موجودًا أم لا
إذا كان DirectoryExists(path) ثم
يبدأ
// أدخل الدليل واحذف الدلائل الفرعية والملفات الموجودة فيه
oldDir := GetCurrentDir;
ChDir(path);
// ابحث عن جميع الملفات في الدليل
FindFirst('؟؟.؟؟', faAnyFile, SearchRec);
يكرر
// تعديل سمات الملف إلى قيم السمات العادية
FileSetAttr(SearchRec.Name,0);
// إذا كان دليلاً وليس .، فاتصل بـ DelTree بشكل متكرر
إذا (SearchRec.Attr وfaDirectory > 0) ثم
يبدأ
إذا (SearchRec.Name[1]<>′.′) إذن
إذا (ليس Deltree (SearchRec.Name)) إذن
استراحة؛
نهاية
// إذا كان ملفًا، فاحذفه مباشرةً
آخر
إذا (لم يتم حذف الملف (SearchRec.Name)) ثم
استراحة ؛
// تابع البحث حتى النهاية
حتى (FindNext(SearchRec)<>0) ;
// ارجع إلى الدليل الأصلي واحذف الدليل
ChDir('..');
النتيجة := ReMoveDir(path);
SetCurrentDir(oldDir);
نهاية
آخر
النتيجة := خطأ ;
نهاية ؛
تم تجميع هذا البرنامج وتمريره ضمن Windows 98 وDelphi 4.0.