FileWriteArray

A função escreve arrays de qualquer tipo, exceto para string de um arquivo bin (pode strings ou arrays dinâmicas).

uint  FileWriteArray(
   int          file_handle,         // Manipular arquivo
   const void&  array1[],            // Array
   int          start=0,             // Iniciar índice array
   int          count=WHOLE_ARRAY    // Número de elementos
   );

Parâmetros

file_handle

[in]  Descritor de arquivo retornado pelo FileOpen().

array[]

[out] Array para gravação.

start=0

[in]  Início do índice array (número do primeiro elemento gravado).

count=WHOLE_ARRAY

[in]  Número de itens para gravar(WHOLE_ARRAY significa que as gravações de todos os itens começam com o número inicial até o final da array).

Valor do Retorno

Número de itens gravados.

Observação

String array pode ser gravada em arquivo TXT. Neste caso, strings são automaticamente terminadas pela linha final de caracteres "\r\n". Dependendo sobre o arquivo tipo ANSI ou UNICODE, strings são ambas convertidas para ansi-codificação ou não.

Exemplo:

//+------------------------------------------------------------------+
//|                                          Demo_FileWriteArray.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- parâmetros de entrada
input string InpFileName="data.bin";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| Estrutura para armazenamento de dados de preços                  |
//+------------------------------------------------------------------+
struct prices
  {
   datetime          date; // data
   double            bid;  // bid preço
   double            ask;  // ask preço
  };
//--- variáveis globais
int    count=0;
int    size=20;
string path=InpDirectoryName+"//"+InpFileName;
prices arr[];
//+------------------------------------------------------------------+
//| Função de inicialização do Expert                                |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- alocar memória para o array
   ArrayResize(arr,size);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Função de Desinicialização do Expert                             |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- escrever a contagem restante de strings se count < n
   WriteData(count);
  }
//+------------------------------------------------------------------+
//| Função tick (ponto) de um Expert                                 |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- salvar dados para array
   arr[count].date=TimeCurrent();
   arr[count].bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
   arr[count].ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
//--- mostra dados correntes
   Print("Date = ",arr[count].date," Bid = ",arr[count].bid," Ask = ",arr[count].ask);
//--- aumentar o contador
   count++;
//--- se array é arquivada, gravar dados no arquivo e zerá-lo
   if(count==size)
     {
      WriteData(size);
      count=0;
     }
  }
//+------------------------------------------------------------------+
//| Escrever n elementos array para arquivo                          |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- abre o arquivo
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- escrever os dados array para o final do arquivo
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arr,0,n);
      //--- fechar o arquivo
      FileClose(handle);
     }
   else
      Print("Falha para abrir o arquivo, erro ",GetLastError());
  }

Também Veja

Variáveis, FileSeek