FolderDelete

Belirtilen klasörü siler. Klasör boş değilse, işlem gerçekleştirilemez.

bool  FolderDelete(
   string  folder_name,       // Silinecek klasörün ismi
   int     common_flag=0      // Kapsam
   );

Parametreler

folder_name

[in] Silinmesi istenen klasörün ismi. Klasörün tam adresini içerir.

common_flag=0

[in]  Dizin konumunu belirleyen bayrak. common_flag = FILE_COMMON ise, klasör tüm müşteri terminallerinin ortak klasöründe bulunur \Terminal\Common\Files. Aksi durumda, yerel bir klasördedir (sınama durumunda MQL5\Files veya MQL5\Tester\Files).

Dönüş değeri

Başarılı ise 'true' değerine, aksi durumda 'false' değerine dönüş yapar.

Not

Dosya işlemleri, MQL5 dili içerisinde güvenlik amacıyla sıkı şekilde kontrol edilmektedir. İşlemleri, MQL5 araçları ile yürütülen dosyalar, dosya güvenlik-ortamı (sandbox) dışında yer alamaz.

Eğer klasörde en azından bir dosya ve/veya alt-klasör bulunuyorsa, o zaman klasör silinmeden önce boşaltılmalıdır, aksi durumda silinemez. FolderClean() fonksiyonu, bir klasörün tüm içeriğini silmek için kullanılır.

Örnek:

//+------------------------------------------------------------------+
//|                                            Demo_FolderDelete.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- Açıklama
#property description "Bu script, FolderDelete() fonksiyonunun kullanım örneğini gösterir."
#property description "İlk olarak, iki klasör oluşturur, bunlardan biri boştur, ikincisi ise bir dosya içerir."
#property description "Boş olmayan bir klasörü silmeye çalıştığımızda hata dönüşü yapar ve bir uyarı mesajı gösterir."
 
//--- Giriş parametrelerinin iletişim penceresini, script çalıştırıldığında göster
#property script_show_inputs
//--- Giriş parametreleri
input string   firstFolder="empty";    // Bir boş klasör
input string   secondFolder="nonempty";// dosyanın oluşturulacağı klasör
string filename="delete_me.txt";       // secondFolder içinde oluşturulacak dosyanın ismi
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Dosya tanıtıcısını buraya yaz
   int handle;
//--- Hangi dosyayı aradığımızı öğren
   string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";
//--- Bir hata ayıklama mesajı  
   PrintFormat("working_folder=%s",working_folder);
//--- MQL5\Files adresinde boş bir klasör oluşturmayı deniyor
   if(FolderCreate(firstFolder,0)) // 0 değeri, terminalin yerel klasöründe çalıştığımız anlamına geliyor
     {
      //--- Tam adresi, oluşturulan klasöre gir
      PrintFormat("%s klasörü oluşturuldu",working_folder+"\\"+firstFolder);
      //--- Hata kodunu sıfırla
      ResetLastError();
     }
   else
      PrintFormat("%s klasörü oluşturulamadı. Hata kodu %d",working_folder+"\\"+firstFolderGetLastError());
 
//--- şimdi, FileOpen() fonksiyonunu kullanarak, boş olmayan bir klasör yarat
   string filepath=secondFolder+"\\"+filename;  // Olmayan bir klasör içinde, yazma amaçlı açacağımız dosyanın adresini oluştur
   handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // FILE_WRITE bayrağı bu durumda zorunlu, bakınız FileOpen
   if(handle!=INVALID_HANDLE)
      PrintFormat("%s dosyası, okuma amacıyla açıldı",working_folder+"\\"+filepath);
   else
      PrintFormat("%s dosyası, %s klasöründe oluşturulamadı. Hata kodu=",filename,secondFolderGetLastError());
 
   Comment(StringFormat("Prepare to delete folders %s and %s"firstFoldersecondFolder));
//--- Çizelgedeki mesajı okumak için 5 saniyelik kısa bir duraklama
   Sleep(5000); // Sleep(), göstergelerde kullanılamaz!
 
//--- İletişim kutusu göster ve kullanıcıya sor
   int choice=MessageBox(StringFormat("%s ve %s klasörlerini silmek istiyor musunuz?"firstFoldersecondFolder),
                         "Klasörler siliniyor",
                         MB_YESNO|MB_ICONQUESTION); //  İki düğme - "Yes" ve "No"
 
//--- Seçilen versiyona göre bir eylem gerçekleştir
   if(choice==IDYES)
     {
      //--- Çizelgeden yorumu sil
      Comment("");
      //--- "Experts" (Uzmanlar) bültenine bir mesaj ekle
      PrintFormat("%s ve %s klasörleri siliniyor",firstFoldersecondFolder);
      ResetLastError();
      //--- Boş klasörleri sil
      if(FolderDelete(firstFolder))
         //--- Klasör boş olduğunda, şu mesajın gösterilmesi gerek
         PrintFormat("%s klasörü başarıyla silindi",firstFolder);
      else
         PrintFormat("%s klasörü silinemedi. Hata kodu=%d"firstFolderGetLastError());
 
      ResetLastError();
      //--- Bir dosya içeren klasörü sil 
      if(FolderDelete(secondFolder))
         PrintFormat("%s klasörü başarıyla silindi"secondFolder);
      else
         //--- Klasör dosya içeriyorsa, şu mesajın gösterilmesi gerekir
         PrintFormat("%s klasörü silinemedi. Hata kodu=%d"secondFolderGetLastError());
     }
   else
      Print("Silme işlemi iptal edildi");
//---
  }

Ayrıca Bakınız

FileOpen(), FolderClean(), FileMove()