Klasör ve alt klasör silme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Klasör ve alt klasör silme

Mesaj gönderen ikra »

server da bulunan paylasima acik olan klasörün icindeki bir klasörü alt klasörleri ile birlikte nasil silebilirim? RMDIR ve REMOVEDIR ile sonuc alamadim...
kıdemsiz üye
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

Kod: Tümünü seç

procedure DelTree(StartDir: string);
var
  Search : TSearchRec;
begin
if Startdir[Length(Startdir)] <> '\' then
  startdir := startdir + '\';
  if FindFirst(startdir + '*.*', faAnyFile, Search) = 0 then
  repeat
    if (Search.Name[1] <> '.' ) then
      if ((Search.Attr and faDirectory) > 0) then 
      begin
        RmDir(StartDir + Search.Name);     
        ChangeFAttrib(StartDir + Search.Name);
      end else 
      begin
        DeleteFile(StartDir + Search.Name);
        Application.ProcessMessages;
      end;
  until FindNext(Search) <> 0;
  FindClose(Search);
end;
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

Hocam Allah razi olsun...
Yeni bir sey daha ögrenmis oldum sayende... ChangeFAttrib'i tanimiyor. Uses kismina ne eklemeliyim? bunu da belirtirsen cok sevinecegim...

cooookkk tesekkür ediyorum...
saygilar...
kıdemsiz üye
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

o ayrı bir procedure idi. delphinin helpinden FileSetAttr diye ararsan örnekte var.
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

cok cok cok cok tesekkür ederim...


Allah razi olsun...

kolay gelsin...
kıdemsiz üye
delphikursu
Üye
Mesajlar: 99
Kayıt: 24 Tem 2004 05:13
Konum: kayseri
İletişim:

ChangeFAttrib procedur oluşturamadım

Mesaj gönderen delphikursu »

ChangeFAttrib proceduru hakkında yardımcı olabilir misiniz
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

Kod: Tümünü seç

procedure ChangeFAttrib(dsy:  String);
begin
 FileSetAttr(dsy, faReadOnly or faSysFile);
end;
delphikursu
Üye
Mesajlar: 99
Kayıt: 24 Tem 2004 05:13
Konum: kayseri
İletişim:

Mesaj gönderen delphikursu »

arkadaşım bu seferde Rmdir komutunda bir hata verdi bende bunu yerine şu komutu kullandım iş görüyor

Kod: Tümünü seç

Uses Shellapi;

function dizinsil(FilesOrDir: string): boolean;
var
  F: TSHFileOpStruct;
  From: string;
  Resultval: integer;
begin
  FillChar(F, SizeOf(F), #0);
  From := FilesOrDir + #0;
  Screen.Cursor := crHourGlass;
  try
    F.wnd   := 0;
    F.wFunc := FO_DELETE;
    F.pFrom := PChar(From);
    F.pTo   := nil;

    F.fFlags := FOF_ALLOWUNDO or
                FOF_NOCONFIRMATION or
                FOF_SIMPLEPROGRESS or
                FOF_FILESONLY;

    F.fAnyOperationsAborted := False;
    F.hNameMappings := nil;
    Resultval := ShFileOperation(F);
    Result := (ResultVal = 0);
  finally
    Screen.Cursor := crDefault;
  end;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
//
dizinsil(edit1.text);
end;
hepinize yardımlarınızdan dolayı teşşkürler allah razı olusun kusuruma bakmayın
Bay_Y
Üye
Mesajlar: 116
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Klasör ve alt klasör silme

Mesaj gönderen Bay_Y »

Herkese kolay gelsin.
Sormak istediğim bu yapılan silme işleminde ekranda uyarı bilgisi çıkıyor , daha doğrusu silindiğine dair işlem , bunun arka planda yapılması sağlanabilir mi ?
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: Klasör ve alt klasör silme

Mesaj gönderen ertank »

Windows 7 ve sonrası için alternatif bir seçenek olması açısından:

Kod: Tümünü seç

uses
  ShellAPI;

procedure DeleteFolder(const AHandle: HWND; const FolderPath: string);
var
  ShOp: TSHFileOpStruct;
begin
  ShOp.Wnd := AHandle;
  ShOp.wFunc := FO_DELETE;
  ShOp.pFrom := PChar(FolderPath + #0);
  ShOp.pTo := nil;
  ShOp.fFlags := FOF_NO_UI;
  SHFileOperation(ShOp);
end;
Yukarıdaki kod onay almadan silme işlemini gerçekleştirir. fFlags parametresi aşağıdaki şekilde farklı işlemler için kullanılabilir.

Kod: Tümünü seç

  ShOp.fFlags := 0; // Windows silme işlemi için onay ister
  ShOp.fFlags := FOF_NOCONFIRMATION; // Onay olmadan silme gerçekleşir. Ancak silme işlemi uzun sürer ise ekrana progress bar gösterir
  ShOp.fFlags := FOF_ALLOWUNDO; // Silinen dosyalar Geri Dönüşüm Kutusu içine gönderilir.
Yukarıdaki parametreleri birlikte kullanmak mümkündir. Örneğin;

Kod: Tümünü seç

  ShOp.fFlags := FOF_NOCONFIRMATION or FOF_ALLOWUNDO; // Onay almaz, uzun işlemlerde progress bar gösterir, silinen dosyalar geri dönüşüm kutusuna taşınır
Bu kodları Windows XP ile test etme şansım olmadı. Ancak çalışıyor olacağını düşünüyorum. Test edebilen birisi olur ise sonucu paylaşmasını rica ediyorum.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Klasör ve alt klasör silme

Mesaj gönderen greenegitim »

windows xp de çalışıyor.
Mücadele güzelleştirir!
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: Klasör ve alt klasör silme

Mesaj gönderen ertank »

greenegitim yazdı:windows xp de çalışıyor.
Teşekkürler
Bay_Y
Üye
Mesajlar: 116
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Klasör ve alt klasör silme

Mesaj gönderen Bay_Y »

Teşekkürler.
Cevapla