Aktif dizini silme Nasıl oluyor?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Aktif dizini silme Nasıl oluyor?
İyi günler. Ben aktif bir dizini içindekilerle beraber nasıl silebilirim? Yalnız geri dönüşüm kutusuna atmamak şartıyla. Şimdiden yardım edelere teşekkürler.
Onun tek dostu Allah
Eğer bahsettiğin aktif dizin senin programının çalışmadığı ve çalışan bir başka bir program yoksa ve çalışan başka bir programın açık tuttuğu dosya içermiyorsa
ile aktif dizini değiştirdikten sonra çalışmaya başlayabilirsin.
ile sildiğin dosyalar geri dönüşüm kutusuna alınmaz. Direkt silinir.
Diğer yandan kullandığım kod belki mükemmel belki değil ama sana en yakınımdakini vereyim. Bir ara netten derlemiştim. Önce directory içerisinde ne var ne yok siliyor. Kendi kendini çağıran bir içsel döngüsü var. En son başlangıç dizini kalıyor onu da bir alt satırda hallediyorum.
Kod: Tümünü seç
SetCurrentDir( 'C:\');
Kod: Tümünü seç
DeleteFile( dosyaadi )
Diğer yandan kullandığım kod belki mükemmel belki değil ama sana en yakınımdakini vereyim. Bir ara netten derlemiştim. Önce directory içerisinde ne var ne yok siliyor. Kendi kendini çağıran bir içsel döngüsü var. En son başlangıç dizini kalıyor onu da bir alt satırda hallediyorum.
Kod: Tümünü seç
Procedure DeleteDirectory(Directory:String);
Var
S : TSearchRec;
Ok : Boolean;
Begin
Ok:=(FindFirst(Directory+'\*.*',faAnyFile,S)=0);
While Ok Do
begin
If (S.Attr And faDirectory>0) Then
Begin
If (S.Name<>'.') And (S.Name<>'..') Then
Begin
DeleteDirectory(Directory+'\'+S.Name); (* Recursion *)
RmDir(Directory+'\'+S.Name)
End
End
Else
If (S.Attr And faReadOnly = 0 ) And
(S.Attr And faHidden = 0 ) And
(S.Attr And faSysFile = 0 ) And
(S.Attr And faVolumeId = 0 ) Then
DeleteFile(Directory+'\'+S.Name);
OK:=(FindNext(S)=0)
End;
FindClose(S);
End;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
DeleteDirectory( 'd:\sil');
RmDir('d:\sil')
end;