FileFlush

Écrit à un disque toutes les données restant dans le tampon du fichier d'entrée-de sortie.

void  FileFlush(
   int  file_handle      // handle du fichier
   );

Paramètres

file_handle

[in] Le descripteur de fichier rendu par la fonction FileOpen().

La valeur rendue

Il n'y a pas de valeur rendue.

Note

A l'exécution de l'opération de l'inscription au fichier, les données peuvent s'y trouver physiquement seulement dans un certain temps. Pour que les données se sauvegardent tout de suite dans un fichier, il faut utiliser la fonction FileFlush(). Si ne pas utiliser la fonction, la partie des données qui ne se sont pas encore sur le disque s'inscrit forcément là-bas seulement à la clôture du fichier par la fonction FileClose().

Il est nécessaire d'utiliser la fonction, quand les données inscrites ont la valeur définie. Il faut prendre en considération que l'appel fréquent de la fonction peut affecter la vitesse du travail du programme.

Il est nécessaire d'appeler la fonction  FileFlush()  entre les opérations de la lecture du fichier et l'enregistrement au fichier.

Exemple:

//--- affichons la fenêtre des paramètres d'entrée au lancement du script
#property script_show_inputs
//---le nom du fichier pour l'inscription
input string InpFileName="example.csv"// le nom du fichier
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- oblitérons la valeur de l'erreur
   ResetLastError();
//--- ouvrons le fichier
   int file_handle=FileOpen(InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- inscrirons les données au fichier
      for(int i=0;i<1000;i++)
        {
         //--- appelons la fonction de l'inscription
         FileWrite(file_handle,TimeCurrent(),SymbolInfoDouble(Symbol(),SYMBOL_BID),SymbolInfoDouble(Symbol(),SYMBOL_ASK));
         //--- enregistrons les données sur le disque sur chaque 128-ième itération
         if((i & 127)==127)
           {
            //--- maintenant les données se trouvent dans le fichier, et à l'erreur critique du terminal nous ne les perdrons pas
            FileFlush(file_handle);
            PrintFormat("i = %d, OK",i);
           }
         //--- le retard à 0.01 seconde
         Sleep(10);
        }
      //--- fermons le fichier
      FileClose(file_handle);
     }
   else
      PrintFormat("L'erreur, le code = %d",GetLastError());
  }

Voir aussi

FileClose