MetaTrader 5 herunterladen

FileWriteArray

Schreibt in die Datei des Typs BIN Arrays verschiedener Typen ausser Zeilentypen (kann Feld der Strukturen sein, das keine Zeilen und dynamische Arrays enthält).

uint  FileWriteArray(
   int          file_handle,         // Datei-Handle
   const void&  array[],             // Feld
   int          start=0,             // Anfangsindex im Feld 
   int          count=WHOLE_ARRAY    // Anzahl der Elemente 
   );

Parameter

file_handle

[in]  Dateiattribut, das durch die Funktion FileOpen() zurückgegeben wird.

array[]

[out]  Feld für Aufzeichnung.

start=0

[in]  Anfangsindex im Feld (Nummer des ersten aufgezeichneten Elementes).

count=WHOLE_ARRAY

[in]  Anzahl der zu aufgezeichneten Elemente (WHOLE_ARRAY bedeutet, dass alle Elemente seit der Nummer start bis zum Arraysende aufgezeichnet werden).

Rückgabewert

Anzahl der aufgezeichneten Elemente.

Bemerkung

Zeilenfeld kann nur in die Datei des Typs TXT geschrieben werden. In diesem Fall werden die Zeilen automatischb mit Symbolen der Zeilenende "\r\n" beendet. Abhängig vom Dateityp ANSI oder UNICODE, werden die Zeilen zur  ansi-Kodierung reduziert oder nicht.

Beispiel:

//+------------------------------------------------------------------+
//|                                          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"
//--- Eingabeparameters
input string InpFileName="data.bin";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| Struktur für die Speicherung von Daten auf die Preise            |
//+------------------------------------------------------------------+
struct prices
  {
   datetime          date; // Datum
   double            bid;  // der Bid Preis
   double            ask;  // der Ask Preis
  };
//--- globale Variablen
int    count=0;
int    size=20;
string path=InpDirectoryName+"//"+InpFileName;
prices arr[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- trennen Sie den Speichern für den Arrays
   ArrayResize(arr,size);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Aufzeichnung die verbleibenden count Zeilen, wenn count<n
   WriteData(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- Speichern Sie die Daten in einem Array
   arr[count].date=TimeCurrent();
   arr[count].bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
   arr[count].ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
//--- zeigen Sie aktuelle Daten an
   Print("Date = ",arr[count].date," Bid = ",arr[count].bid," Ask = ",arr[count].ask);
//--- vergrössern Sie den Zähler
   count++;
//--- Wenn das Array ausgefüllt wurde, dann die Daten in einer Datei speichern und nullen es aus 
   if(count==size)
     {
      WriteData(size);
      count=0;
     }
  }
//+------------------------------------------------------------------+
//| Aufzeichnung die n Elementen des Arrays in der Datei             |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- öffnen Sie die Datei
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- schreiben Sie des Arrays Daten an das Ende der Datei
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arr,0,n);
      //--- schließen Sie die Datei
      FileClose(handle);
     }
   else
      Print("Fehler beim Öffnen der Datei, Fehler ",GetLastError());
  }

Sehen Sie auch

Variablen, FileSeek