FileSelectDialog

Dialog zum Erstellen einer Datei oder eines Verzeichnisses.

int  FileSelectDialog(
   string   caption,              // Kopfzeile des Fensters
   string   initial_dir,          // Anfangsverzeichnis
   string   filter,               // Erweiterungsfilter
   uint     flags,                // Kombination der Flags
   string&  filenames[],          // Array mit den Dateinamen
   string   default_filename      // standardmäßiger Dateiname
   );

Parameter

caption

[in]  Kopfzeile des Dialogfensters.

initial_dir

[in]  Name des Anfangsverzeichnisses relativ zu MQL5\Files, dessen Inhalt im Dialogfenster angezeigt werden soll. Ist dieser Wert NULL, wird MQL5\Files im Dialogfenster angezeigt.

filter

[in]  Filtert die Dateien gemäß der angegebenen Erweiterung, die im Dialogfenster angezeigt werden soll. Dateien in anderem Format werden ausgeblendet.

flags

[in] Kombination der Flags, die den Modus des Dialogfensters festlegen. Die Flags sind wie folgt definiert:
FSD_WRITE_FILE – Dialog zum Öffnen einer Datei;
FSD_SELECT_FOLDER – nur die Auswahl von Ordnern erlauben;
FSD_ALLOW_MULTISELECT – die Auswahl mehrerer Dateien erlauben;
FSD_FILE_MUST_EXIST – ausgewählte Dateien müssen existieren;
FSD_COMMON_FOLDER – die Datei befindet sich im gemeinsamen Ordner aller Client-Terminals \Terminal\Common\Files.

filenames[]

[out]  Array mit den Namen als Zeichenketten der ausgewählten Dateien/Verzeichnisse.

default_filename

[in]  Standardname von Datei/Verzeichnis. Falls angegeben, wird dem Öffnungsdialog automatisch der Name hinzugefügt und beim Testen im Array filenames[] zurückgegeben.

 

Rückgabewert

Im Falle einer erfolgreichen Beendigung gibt die Funktion die Anzahl der ausgewählten Dateien zurück, deren Namen in filenames[] eingetragen wurden. Wenn ein Nutzer den Dialog schließt, ohne eine Datei auszuwählen, gibt die Funktion 0 zurück. Im Falle einer nicht erfolgreichen Ausführung wird ein Wert kleiner 0 zurückgegeben. Der Fehlercode kann mit GetLastError(). abgerufen werden.

Hinweis

Aus Sicherheitsgründen wird die Arbeit mit Dateien in der Sprache MQL5 streng kontrolliert. Dateien, die bei Dateioperationen mittels der Sprache MQL5 verwendet werden, können nicht außerhalb der Datei-Sandbox (d.h. außerhalb des MQL5\Files-Verzeichnisses) liegen.

Der Name initial_dir wird im Verzeichnis des Client-Terminals in MQL5\Files gesucht (oder im Falle von Tests im Verzeichnis test_agent_directory\MQL5\Files). Wenn in der Kombination der Flags FSD_COMMON_FOLDER gesetzt ist, wird die Suche nach dem Anfangsverzeichnis im gemeinsamen Ordner aller Client-Terminals \Terminal\Common\Files. durchgeführt.

Der Parameter filter gibt gültige Dateien an und sollte im Format "<Beschreibung-1>|<Erweiterung-1>|<Beschreibung-2>|<Erweiterung-2>..." gesetzt werden, z.B. "Text files (*.txt)|*.txt|All files (*.*)|*.*". Die erste Erweiterung "Textdateien (*.txt)|*.txt" wird als Standarddateityp ausgewählt.

Wenn filter=NULL, lautet die Maske der Dateiauswahl im Dialogfenster "All Files (*.*)|*.*|"

Wenn der Parameter default_filename gesetzt ist, gibt der Aufruf FileSelectDialog() den Wert 1 zurück, während der Wert von default_filename selbst während des nicht-visualisierten Tests in das Array Dateinamen[] kopiert wird.

Die Funktion kann nicht in nutzerdefinierten Indikatoren verwendet werden, da durch den Aufruf von FileSelectDialog() der gerade ausgeführte Thread für die gesamte Zeit, während der auf die Antwort des Nutzers gewartet wird, unterbrochen wird. Da alle Indikatoren für jedes Symbol in einem einzigen Thread ausgeführt werden, macht eine solche Unterbrechung den Arbeitsablauf aller Diagramme in allen Zeitrahmen für dieses Symbol unmöglich.

Beispiel:

//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Abrufen der Namen der Textdateien zum Laden aus dem Common-Verzeichnis des Kliententerminals
   string filenames[];
   if(FileSelectDialog("Dateien zum Laden auswählen"NULL
                       "Text files (*.txt)|*.txt|All files (*.*)|*.*"
                       FSD_ALLOW_MULTISELECT|FSD_COMMON_FOLDERfilenames"data.txt")>0)
     {
      //--- Anzeige des Namens von jeder ausgewählten Datei
      int total=ArraySize(filenames);
      for(int i=0i<totali++)
         Print(i": "filenames[i]);
     }
   else
     {
     Print("Keine Dateien ausgewählt");
     }
//---
  }

Siehe auch

FileOpen, FileIsExist, FileDelete, FileMove, FolderCreate, FolderDelete, FolderClean, Flags für das Öffnen von Dateien