//+------------------------------------------------------------------+ //| 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+"\\"+firstFolder, GetLastError()); //--- ş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,secondFolder, GetLastError()); Comment(StringFormat("Prepare to delete folders %s and %s", firstFolder, secondFolder)); //--- Ç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?", firstFolder, secondFolder), "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",firstFolder, secondFolder); 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", firstFolder, GetLastError()); 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", secondFolder, GetLastError()); } else Print("Silme işlemi iptal edildi"); //--- } |