FileReadArray

Lee los arrays de cualquier tipo, salvo los arrays literales (string) (puede ser un array de estructuras que no contienen las cadenas ni arrays dinámicos) de un archivo binario desde la posición actual del puntero de archivos.

uint  FileReadArray(
   int    file_handle,               // manejador del archivo
   void&  array[],                   // array para grabar
   int    start=0,                   // posición de inicio del array para grabar
   int    count=WHOLE_ARRAY          // cantidad para leer
   );

Parámetros

file_handle

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

array[]

[out]  Array donde van a cargarse los datos.

start=0

[in]  Posición de inicio para la escritura en el array.

count=WHOLE_ARRAY

[in]  Número de elementos para la lectura.

Valor devuelto

Número de elementos leídos. Por defecto lee el array entero (count=WHOLE_ARRAY).

Nota

Un array de cadenas puede ser leído únicamente desde un archivo del tipo TXT. En caso de necesidad la función intenta aumentar el tamaño del array.

Ejemplo (se utiliza el archivo conseguido como resultado de trabajo del ejemplo para la función FileWriteArray)

//--- mostramos la ventana de parámetros de entrada al arrancar el script
#property script_show_inputs
//--- parámetros de entrada
input string InpFileName="data.bin";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| Estructura para guardar los datos de precios                            |
//+------------------------------------------------------------------+
struct prices
  {
   datetime          date; // fecha
   double            bid;  // precio bid
   double            ask;  // precio ask
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- array de estructura
   prices arr[];
//--- ruta del archivo
   string path=InpDirectoryName+"//"+InpFileName;
//--- abrimos archivo
   ResetLastError();
   int file_handle=FileOpen(path,FILE_READ|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- leemos todos los datos desde el archivo al array
      FileReadArray(file_handle,arr);
      //--- obtenemos el tamaño del array
      int size=ArraySize(arr);
      //--- imprimimos los datos desde el array
      for(int i=0;i<size;i++)
         Print("Date = ",arr[i].date," Bid = ",arr[i].bid," Ask = ",arr[i].ask);
      Print("Total data = ",size);
      //--- cerramos el archivo
      FileClose(file_handle);
     }
   else
      Print("File open failed, error ",GetLastError());
  }

Véase también

Variables, FileWriteArray