//+------------------------------------------------------------------+
//| 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;
}
|