FileCopy

La funzione copia il file originale da una cartella locale o condivisa in un altro file.

bool  FileCopy(
   const string  src_file_name,     // Nome del file sorgente
   int           common_flag,       // Posizione
   const string  dst_file_name,     // Nome del file di destinazione
   int           mode_flags         // Modalità di accesso
   );

Parametri

src_file_name

[in] Nome del file da copiare.

common_flag

[in] Flag determinante la posizione del file. Se common_flag = FILE_COMMON, allora il file si trova in una cartella condivisa per tutti i terminali client \Terminal\Common\Files. In caso contrario, il file si trova in una cartella locale (ad esempio, common_flag = 0).

dst_file_name

[in] il nome del file dei risultati.

mode_flags

[in]Flag di Accesso. Il parametro può contenere solo 2 flags: FILE_REWRITE e/o FILE_COMMON - altri flags vengono ignorati. Se il file esiste già, ed il flag FILE_REWRITE non è stato specificato, il file non viene riscritto, e la funzione restituisce false.

Valore restituito

In caso di fallimento la funzione restituisce false.

Nota

Per motivi di sicurezza, il lavoro con i file è strettamente controllato nel linguaggio MQL5. I file con cui sono condotte le operazioni di file utilizzando i mezzi MQL5, non possono esservi al di fuori della sandbox del file.

Se il nuovo file esiste già, la copia verrà effettuata in base alla disponibilità del flag FILE_REWRITE nel parametro mode_flags.

Esempio:

//--- mostra la finestra dei parametri di input quando lancia lo script
#property script_show_inputs
//--- parametri di input
input string InpSrc="source.txt";       // sorgente
input string InpDst="destination.txt";  // copia
input int    InpEncodingType=FILE_ANSI// ANSI=32 or UNICODE=64
//+--------------------------------------------------------------------------------+
//| Funzione di avvio del programma Script                                         |
//+--------------------------------------------------------------------------------+
voidOnStart()
  {
//--- visualizza il contenuto del sorgente (deve esistere)
   if(!FileDisplay(InpSrc))
      return;
//--- controlla se il file della copia già esiste (può non essere creato)
   if(!FileDisplay(InpDst))
     {
      //--- il file della copia non esiste, copiatura senza il flag FILE_REWRITE (copia corretta)
      if(FileCopy(InpSrc,0,InpDst,0))
         Print("Il file è stato copiato!");
      else
         Print("Il file non è stato copiato!");
     }
   else
     {
      //--- il file della copia già esiste, prova copia senza FILE_REWRITE flag (copia sbagliata)
      if(FileCopy(InpSrc,0,InpDst,0))
         Print("Il file è stato copiato!");
      else
         Print("Il file non è stato copiato!");
      //--- il contenuto file InpDst rimane lo stesso
      FileDisplay(InpDst);
      //--- copia ancora una volta con il flag FILE_REWRITE (copiatura corretta se il file esiste)
      if(FileCopy(InpSrc,0,InpDst,FILE_REWRITE))
         Print("Il file è stato copiato!");
      else
         Print("Il file non è stato copiato!");
     }
//--- riceve la copia del file InpSrc
   FileDisplay(InpDst);
  }
//+--------------------------------------------------------------------------------+
//| Legge il contenuto del file                                                    |
//+--------------------------------------------------------------------------------+
bool FileDisplay(const string file_name)
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- apre il file
   int file_handle=FileOpen(file_name,FILE_READ|FILE_TXT|InpEncodingType);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- visualizza il contenuto del file nel loop
      Print("+---------------------+");
      PrintFormat("Nome del file = %s",file_name);
      while(!FileIsEnding(file_handle))
         Print(FileReadString(file_handle));
      Print("+---------------------+");
      //--- chiude il file
      FileClose(file_handle);
      return(true);
     }
//--- fallimento nell'aprire il file
   PrintFormat("%s non è aperto, errore = %d",file_name,GetLastError());
   return(false);
  }