Descargar MetaTrader 5

FileFlush

Esta función guarda en el disco todos los datos que se han quedado en el búfer de entrada/salida.

void  FileFlush(
   int  file_handle      // manejador del archivo
   );

Parámetros

file_handle

[in]  Descriptor de archivo devuelto por la función FileOpen().

Valor devuelto

No hay valor devuelto.

Nota

Cuando se ejecuta la operación de escrituro en el archivo, los datos físicos pueden aparecer en él sólo dentro de un período de tiempo. Para que los datos se guarden en el archivo en el acto, hay que utilizar la función FileFlush(). Si esta función no se utiliza, una parte de datos que todavía no han llegado al disco se graban en él forzadamente sólo cuando la función FileClose() cierra el archivo.

Es necesario utilizar esta función cuando los datos que se graban representan un cierto valor. Y hay que tener en cuenta que las llamadas frecuentes a esta función pueden reflejarse en la velocidad del programa.

Hay que llamar a la función FileFlush() entre las operaciones de lectura y escritura de un archivo.

Ejemplo:

//--- mostramos la ventana de parámetros de entrada al arranciar el script
#property script_show_inputs
//--- nombre de archivo para la escritura
input string InpFileName="example.csv"// nombre del archivo
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- reseteamos el valor del error
   ResetLastError();
//--- abrimos el archivo
   int file_handle=FileOpen(InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- grabamos los datos en el archivo
      for(int i=0;i<1000;i++)
        {
         //--- llamamos la función de escritura
         FileWrite(file_handle,TimeCurrent(),SymbolInfoDouble(Symbol(),SYMBOL_BID),SymbolInfoDouble(Symbol(),SYMBOL_ASK));
         //--- grabamos los datos en el disco con cada 128 iteración
         if((i & 127)==127)
           {
            //--- ahora los datos van a guardarse en el archivo, y en caso de un error crítico no los vamos a perder
            FileFlush(file_handle);
            PrintFormat("i = %d, OK",i);
           }
         //--- retraso de 0,01 segundos
         Sleep(10);
        }
      //--- cerramos el archivo
      FileClose(file_handle);
     }
   else
      PrintFormat("Error, código = %d",GetLastError());
  }

Véase también

FileClose


Actualizado: 2015.12.03