//+------------------------------------------------------------------+ //| Demo_FolderClean.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, FolderClean() fonksiyonunun kullanım örneğini gösterir." #property description "Önce, belirtilen klasörde FileOpen() fonksiyonu ile dosyalar oluşturulur." #property description "Ardından dosyalar silinmeden önce MessageBox() fonksiyonu ile bir uyarı gösterilir." //--- giriş parametrelerinin iletişim penceresini, script çalıştırıldığında göster #property script_show_inputs //--- Giriş parametreleri input string foldername="demo_folder"; // MQL5/Files/ dizininde bir klasör oluştur input int files=5; // Oluşturulacak ve silinecek dosyaların sayısı //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { string name="testfile"; //--- Dosyaları, önce terminal veri klasöründe aç veya oluştur for(int N=0;N<files;N++) { //--- 'demo_folder\testfileN.txt' biçimde dosya ismi string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N); //--- Yazma bayrağı ile bir dosya aç, bu durumda otomatik olarak 'demo_folder' klasörü oluşturulacak int handle=FileOpen(filemane,FILE_WRITE); //--- FileOpen() fonksiyonu başarılı oldu mu öğren if(handle==INVALID_HANDLE) { PrintFormat("%s dosyasının oluşturulması başarısız. Hata kodu",filemane,GetLastError()); ResetLastError(); } else { PrintFormat("%s dosyası, başarılı biçimde açıldı",filemane); //--- Açılan dosyaya artık ihtiyaç yok; dosyayı kapat FileClose(handle); } } //--- Klasördeki dosyaların sayısını kontrol et int k=FilesInFolder(foldername+"\\*.*",0); PrintFormat("%s klasörü toplamda %d adet dosya içeriyor",foldername,k); //--- Kullanıcıya sormak için bir iletişim penceresi aç int choice=MessageBox(StringFormat("%s klasöründen %d adet dosya sileceksiniz. Devam etmek istiyor musunuz?",k,foldername), "Dosyalar klasörden siliniyor", MB_YESNO|MB_ICONQUESTION); // İki düğme - "Yes" ve "No" ResetLastError(); //--- Seçilen versiyona göre bir eylem gerçekleştir if(choice==IDYES) { //--- Dosyaları silmeye başla PrintFormat("%s klasöründeki tüm dosyaların silinmesi için uğraşılıyor",foldername); if(FolderClean(foldername,0)) PrintFormat("Dosyalar başarıyla silindi, %d adet dosya, %s klasöründe kaldı", foldername, FilesInFolder(foldername+"\\*.*",0)); else PrintFormat("%s klasöründen dosyalar silinemedi. Hata kodu %d",foldername,GetLastError()); } else PrintFormat("Silme işlemi iptal edildi"); //--- } //+------------------------------------------------------------------+ //| Belirtilen klasördeki dosya sayısına dönüş yapar | //+------------------------------------------------------------------+ int FilesInFolder(string path,int flag) { int count=0; long handle; string filename; //--- handle=FileFindFirst(path,filename,flag); //--- Bir dosya bile bulunmuşsa, daha fazlası için aramaya devam et if(handle!=INVALID_HANDLE) { //--- Dosya ismini göster PrintFormat("%s dosyası bulundu",filename); //--- Bulunan dosyaların/klasörlerin sayacını artır count++; //--- dosyaları/klasörleri aramaya başla while(FileFindNext(handle,filename)) { PrintFormat("%s dosyası bulundu",filename); count++; } //--- Tamamlanmasının ardından arama işleyicisini kapamayı unutma FileFindClose(handle); } else // İşleyici alınamadı { PrintFormat("%s klasöründeki dosya araması başarısız oldu",path); } //--- sonuca dönüş yap return count; } |