PDA

View Full Version : سوال: حذف یک یا چند پوشه



yosefyosef
جمعه 18 تیر 1395, 04:36 صبح
با سلام وخسته نباشید مشکلم هنگ کردن کامبیوتر
من برای حذف یک یا چند پوشه بصورت زیر عمل می کنم
1- در قسمت uses کلمه ShellAPI اضافه کردم
2 - یک function با کد زیر نوشتم


function DelDir(dir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_DELETE;
fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
pFrom := PChar(dir + #0);
end;
Result := (0 = ShFileOperation(fos));
end;



3- در button1 کد زیر نوشتم



DelDir('c:\Data1\'+Trim(edit1.Text)+'');
DelDir('c:\Data1\'+Trim(edit2.Text)+'');
DelDir('c:\\Data1\'+Trim(edit3.Text)+'');


ـ ولی متاسفانه فولدرها حذف می شود ولی کامبیوتر هنگ می کند
سؤال آیا روشی برای هنگ نکردن دارید
وایا روش دیگری یا کد دیگری برای حذف فولدرها دارید

Mask
جمعه 18 تیر 1395, 12:48 عصر
از این کد استفاده کنید

procedure DeleteDirectory(Path:string);var
SR : TSearchRec;
begin
try
if Path[Length(Path)]<>'\' then Path:=Path+'\';
if FindFirst(Path+'*.*',faAnyFile,SR)=0 then
repeat
if ((SR.Attr=32)or(SR.Attr=128)) then
DeleteFile(Path+SR.Name)
else if SR.Name[1]<>'.' then
DeleteDirectory(Path+SR.Name);
until FindNext(SR)<>0;
FindClose(SR);


Delete(Path,Length(Path),1);
RemoveDir(Path);
except
end;
end;




procedure TForm1.Button1Click(Sender: TObject);
begin
DeleteDirectory('c:\1');
end;