Aktif dizini silme Nasıl oluyor?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
delphiibo
Üye
Mesajlar: 72
Kayıt: 27 Eki 2005 04:55
Konum: istanbul
İletişim:

Aktif dizini silme Nasıl oluyor?

Mesaj gönderen delphiibo »

İ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
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

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

Kod: Tümünü seç

SetCurrentDir( 'C:\');
ile aktif dizini değiştirdikten sonra çalışmaya başlayabilirsin.

Kod: Tümünü seç

DeleteFile( dosyaadi ) 
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ç

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;
Resim
Resim ....Resim
Cevapla