MetaTrader 5 herunterladen

FolderDelete

Entfernt das angegeben Verzeichnis. Wenn der Ordner leer ist, kann er nicht entfernt werden.

bool  FolderDelete(
   string  folder_name,       // Zeile mit dem Namen des entfernten Ordners 
   int     common_flag=0      // Geltungsbereich
   );

Parameter

folder_name

[in]  Name des Verzeichnisses, das entfernt werden muss. Hat den ganzen Pfad zum Ordner.

common_flag=0

[in] Flagge, die die Lage des Verzeichnisses bestimmt. Wenn common_flag=FILE_COMMON, befindet sich das Verzeichnis im Gesamtordner aller Client-Terminals \Terminal\Common\Files. Anderenfalls befindet sich das Verzeichnis im lokalen Ordner (MQL5\files oder MQL5\tester\files beim Testen).

Rückgabewert

Gibt true im Erfolgsfall zurück, anderenfalls false.

Bemerkung

Aus Sicherheitsgründen ist die Arbeit mit Dateien in MQL5 streng gesteuert. Dateien, mit denen Datei-Operationen mittels MQL5 durchgeführt werden, können nicht außerhalb der Datei-Sandbox sein.

Wenn es im Verzeichnis wenigstens eine Datei und / oder ein Unterverzeichnis gibt, ist die Entfernung solches Verzeichnisses unmöglich, es muss vorerst abgeklärt werden. durch die Funktion FolderClean() kann der Ordner von allen Dateien und verschachtelten Unterordnern abgeklärt werden.

Beispiel:

//+------------------------------------------------------------------+
//|                                            Demo_FolderDelete.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                     https://team.metaquotes.ru/email/view/599588 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "https://team.metaquotes.ru/email/view/599588"
#property version   "1.00"
//--- Beschreibung
#property description "Das Skript zeigt ein Beispiel der Funktion FolderDelete()."
#property description "Erstellen Sie zunächst zwei Ordner, einer ist leer und der andere enthält eine Datei."
#property description "Beim Versuch einen nicht-leeren Ordner zu löschen, erhalten wir eine Fehler-und Warnmeldung."
 
//--- Beim Starten des Scripts zeigen Sie den Fenster mit den Eingabeparametern an
#property script_show_inputs
//--- Eingabeparameter
input string   firstFolder="empty";    // Leerer Ordner
input string   secondFolder="nonempty";// Ein Ordner mit einer Datei
string filename="delete_me.txt";       // der Dateiname, die Sie im Ordner secondFolder erstellen
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Schreiben Sie die Datei-Handle hier
   int handle;
//--- Finden Sie in welchem Ordner Sie arbeiten
   string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";
//--- Debug-Meldung
   PrintFormat("working_folder=%s",working_folder);
//--- Versuchen Sie einen leeren Ordner auf Pfad MQL5\Files zu erstellen
   if(FolderCreate(firstFolder,0)) // 0 bedeutet, dass Sie in lokalem Ordner des Terminals arbeiten
     {
      //--- Zeigen Sie den vollen Pfad zum erstellten Ordner
      PrintFormat("Ordner %s wurde erstellt",working_folder+"\\"+firstFolder);
      //--- Fehlercode rücksetzen
      ResetLastError();
     }
   else
      PrintFormat("Ordner %s konnte nicht erstellt werden. Fehlercode %d",working_folder+"\\"+firstFolderGetLastError());
 
//--- Erstellen Sie nun einen nicht-leeren mit der FileOpen()-Funktion
   string filepath=secondFolder+"\\"+filename;  // Formen Sie den Pfad zur Datei, die Sie öffnen, um in einen nicht vorhandenen Ordner zu schreiben
   handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // Flag FILE_WRITE ist in diesem Fall erforderlich, sehen Sie Hilfe für FileOpen
   if(handle!=INVALID_HANDLE)
      PrintFormat("Datei %s wurde für lesen eröffnet",working_folder+"\\"+filepath);
   else
      PrintFormat("Date %s konnte nicht im Ordner %s erstellt werden. Fehlercode=",filename,secondFolderGetLastError());
 
   Comment(StringFormat("Vorbereiten auf Löschung der Dateien %s und %s"firstFoldersecondFolder));
//--- Eine kurze Pause von 5 Sekunden, so dass Sie die Meldung auf Chart lesen können
   Sleep(5000); // Sleep() kann nicht in den Indikators verwendet werden!
 
//--- Im Dialogfenster fragen Sie den Benutzer
   int choice=MessageBox(StringFormat("Möchten Sie Ordner %s und %s löschen?"firstFoldersecondFolder),
                         "Löschung der Ordner",
                         MB_YESNO|MB_ICONQUESTION); //  Zwei Schaltflächen - "Yes" und "No"
 
//--- Aktionen je nach der gewählten Option
   if(choice==IDYES)
     {
      //--- Den Kommentar aus dem Chart löschen
      Comment("");
      //---  Eine Meldung in "Experts" Journal hinzufügen
      PrintFormat("Versuch die Ordner %s und %s zu löschen",firstFoldersecondFolder);
      ResetLastError();
      //--- Löschen den leeren Ordner
      if(FolderDelete(firstFolder))
         //--- Diese Meldung soll erscheinen, weil der Ordner leer ist
         PrintFormat("Ordner %s wurde erfolgreich gelöscht",firstFolder);
      else
         PrintFormat("Ordner %s konnte nicht gelöscht werden. Fehlercode=%d"firstFolderGetLastError());
 
      ResetLastError();
      //--- Löschen Sie den Ordner mit einer Datei 
      if(FolderDelete(secondFolder))
         PrintFormat("Ordner %s wurde erfolgreich gelöscht"secondFolder);
      else
         //--- Diese Meldung soll erscheinen, weil der Ordner hat eine Datei
         PrintFormat("Ordner %s konnte nicht gelöscht werden. Fehlercode=%d"secondFolderGetLastError());
     }
   else
      Print("Löschung wurde abgebrochen");
//---
  }

Sehen Sie auch

FileOpen(), FolderClean(), FileMove()