FileSelectDialog

Bir dosya veya klasör açma/oluşturma iletişim kutusu oluşturun.

int  FileSelectDialog(
   string   caption,              // pencere başlığı
   string   initial_dir,          // başlangıç dizini
   string   filter,               // uzantı filtresi
   uint     flags,                // bayrak kombinasyonu
   string&  filenames[],          // dosya adlarını içeren dizi
   string   default_filename      // varsayılan dosya adı
   );

Parametreler

caption

[in]  İletişim kutusu penceresi başlığı.

initial_dir

[in]  İçeriği iletişim kutusunda görüntülenecek olan MQL5\Files dizinindeki başlangıç dizini adı. Değer NULL ise, iletişim kutusunda MQL5\Files görüntülenir.

filter

[in]  Seçim iletişim penceresinde görüntülenecek dosyaların uzantı filtresi. Diğer formatlardaki dosyalar gizlenir.

flags

[in] İletişim penceresi modunu tanımlayan bayrakların kombinasyonu. Bayraklar aşağıdaki gibi tanımlanır:
FSD_WRITE_FILE - dosya açma iletişim kutusu;
FSD_SELECT_FOLDER - yalnızca klasör seçimine izin ver;
FSD_ALLOW_MULTISELECT - birden fazla dosya seçimine izin ver;
FSD_FILE_MUST_EXIST - seçilen dosyalar mevcut olmalıdır;
FSD_COMMON_FOLDER - dosya tüm müşteri terminallerinin \Terminal\Common\Files ortak klasöründe bulunur.

filenames[]

[out]  Seçili dosyaların/klasörlerin isimlerinin yerleştirileceği dizgeler dizisi.

default_filename

[in]  Varsayılan dosya/klasör adı. Belirtilirse, açık iletişim kutusuna otomatik olarak bir ad eklenir ve sınama sırasında filenames[] dizisine geri döndürülür.

 

Geri dönüş değeri

Başarılı yürütme durumunda, fonksiyon, adları filenames[]'den elde edilebilen seçili dosyaların sayısını geri döndürür. Kullanıcı iletişim kutusunu bir dosya seçmeden kapatırsa fonksiyon 0 değerini döndürür. Başarısız yürütme durumunda, 0'dan küçük bir değer döndürülür. Hata kodu GetLastError() kullanılarak elde edilebilir.

Not

Güvenlik nedeniyle, dosyalarla çalışmak MQL5 dilinde katı bir biçimde denetlenir. MQL5 dili aracılığıyla dosya işlemlerinde kullanılan dosyalar, dosya sandboxının dışında (yani, MQL5\Files dizininin dışında) bulunamaz.

initial_dir adı, müşteri terminalinin dizinindeki MQL5\Files'da (veya sınama durumunda test_agent_directory\MQL5\Files'da) aranır. Bayraklar arasından FSD_COMMON_FOLDER ayarlanırsa, başlangıç dizininin aranması tüm müşteri terminalleri \Terminal\Common\Files ortak klasöründe gerçekleştirilir.

filter parametresi geçerli dosyaları belirtir ve "<açıklama 1>|<uzantı 1>|<açıklama 2>|<uzantı 2>..." biçiminde ayarlanmalıdır, örneğin, "Metin dosyaları (*.txt)|*.txt|Tüm dosyalar (*.*)|*.*". İlk uzantı "Metin dosyaları (*.txt)|*.txt" varsayılan dosya tipi olarak seçilir.

filter=NULL ise, iletişim penceresindeki dosya seçimi maskesi "Tüm Dosyalar (*.*)|*.*|" olur.

default_filename parametresi ayarlanırsa, FileSelectDialog()'u çağırmak 1 değerini geri döndürürken, default_filename değerinin kendisi görselleştirilmemiş sınama sırasında filenames[] dizisine kopyalanır.

Özel göstergelerde fonksiyonun kullanılması önerilmez, çünkü FileSelectDialog() çağrısı, kullanıcının yanıtını beklerken göstergenin yürütme iş parçasını tüm zaman boyunca askıya alır. Her bir sembol için tüm göstergeler tek bir iş parçacığında yürütüldüğünden, bu sembol için tüm zaman dilimlerinin tüm grafikleri askıya alınır.

Örnek:

//+------------------------------------------------------------------+
//| Script programı başlatma fonksiyonu                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- istemci terminallerinin ortak klasöründen indirilecek metin dosyalarının adlarını elde et
   string filenames[];
   if(FileSelectDialog("İndirilecek dosyaları seçin"NULL
                       "Text files (*.txt)|*.txt|All files (*.*)|*.*"
                       FSD_ALLOW_MULTISELECT|FSD_COMMON_FOLDERfilenames"data.txt")>0)
     {
      //--- seçilen her dosyanın adını göster
      int total=ArraySize(filenames);
      for(int i=0i<totali++)
         Print(i": "filenames[i]);
     }
   else
     {
     Print("Files not selected");
     }
//---
  }

Ayrıca bakınız

FileOpen, FileIsExist, FileDelete, FileMove, FolderCreate, FolderDelete, FolderClean, Flags of opening files