PDA

View Full Version : حذف فقط محتویات یک شاخه



Mask
دوشنبه 13 اردیبهشت 1389, 16:20 عصر
با سلام.
بنده کدی دارم که یک شاخه با کلیه محتویات آن را حذف میکند.
اما برای اینکه بتوان فقط محتویات ، اعم از فایل و شاخه های یک شاخه را پاک کرد . چه کدی باید نوشت.
ممنون از دوستان.

Felony
دوشنبه 13 اردیبهشت 1389, 16:38 عصر
باید از الگوریتم بازگشتی استفاده کنید ، چند وقت پیش یه کد گزاشتم که به روش بازگشتی تمام فایل های موجود در یک دایرکتوری رو لیست میکرد ، میتونید از اون کد راهنمایی بگیرید .

farideh_en
سه شنبه 14 اردیبهشت 1389, 09:46 صبح
سلام
ببینین این کد میتونه مشکلتونو حل کنه

interface
uses
Windows, Messages, ..., SHELLAPI;


procedure DelFilesFromDir(Directory, FileMask: string; DelSubDirs: Boolean);
var
SourceLst: string;
FOS: TSHFileOpStruct;
begin
FillChar(FOS, SizeOf(FOS), 0);
FOS.Wnd := Application.MainForm.Handle;
FOS.wFunc := FO_DELETE;
SourceLst := Directory + '\' + FileMask + #0;
FOS.pFrom := PChar(SourceLst);
if not DelSubDirs then
FOS.fFlags := FOS.fFlags OR FOF_FILESONLY;
// Remove the next line if you want a confirmation dialog box
FOS.fFlags := FOS.fFlags OR FOF_NOCONFIRMATION;
// Add the next line for a "silent operation" (no progress box)
// FOS.fFlags := FOS.fFlags OR FOF_SILENT;
SHFileOperation(FOS);
end;

دوست عزیز حواستون باشه اگه می خواید که زیر شاخه ها حذف نشن مقدار DelSubDirs را برابر False قرار بدین مثل نمونه زیر


procedure TForm1.Button1Click(Sender: TObject);
begin
DelFilesFromDir('C:\TEST', '*.*', FALSE);
end;
و برای حذف تمام subdirectory ها مقدار DelSubDirs را برابر True قرار بدین.

DelFilesFromDir('C:\TEST', '*.*', TRUE);

موفق باشین