FileRead

Lesen von Daten aus einer Datei beliebigen Typs.

uint FileRead(
 int file_handle, // Datei-Handle
 ... // Liste der zu lesenden Parameter
 );

Parameter

file_handle

[in] Dateideskriptor, der von FileOpen().

...

[in] Durch Kommas getrennte Liste der Parameter, die aus der Datei gelesen werden. Jeder Parameter wird per Referenz übergeben. Die Anzahl der Parameter darf 256 nicht überschreiten. Variablen müssen Basistypen sein; Arrays, Strukturen, Matrizen und Vektoren sind nicht erlaubt.

Rückgabewert

Anzahl der gelesenen Variablen. Wenn weniger Variablen als erwartet gelesen wurden, kann der Lesefehler mit GetLastError() analysiert werden. Wenn beim Lesen aus einer CSV-Datei ein Zeilenende erreicht wird, wird das Lesen unterbrochen, aber kein Fehler ausgelöst.

Hinweis

FileRead entspricht der Funktion FileWrite. Die Funktion ist universell und liest aus Dateien beliebigen Typs: CSV, TXT oder BIN.

FileRead kann Daten des Typs string nicht aus einer Binärdatei lesen, da die Länge der zu lesenden Zeichenkette im Voraus unbekannt ist.

Beim Lesen aus einer Binärdatei wird in jede Variable die dem Datentyp entsprechende Anzahl von Bytes gelesen (char - 1, int - 4, long - 8, double - 8 usw.).

Beim Lesen aus einer Textdatei wird die gesamte Zeile bis zu ihrem Ende in eine Variable des Typs string gelesen, ohne die abschließenden Zeilenendezeichen.

Beim Lesen aus einer CSV-Datei werden zuerst Zeichenketten mit der Textdarstellung des entsprechenden Typs gelesen, anschließend wird die Zeichenkette konvertiert in eine Variable des entsprechenden Typs (Beispiele siehe FileReadNumber, FileReadBool, FileReadDateTime).

Beispiel:

//+------------------------------------------------------------------+
//|                                                 TestFileRead.mq5 |
//|                                  Copyright 2026, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   uint     written,read;
//--- 13 Variablen verschiedener Typen
   bool     bool_value=true;
   char     char_value=123;
   short    short_value=12345;  
   int      int_value=1234567;
   long     long_value=5000000000;
   float    float_value=FLT_EPSILON;
   double   double_value=M_PI;
   color    color1_value=clrAquamarine;
   color    color2_value=C'111,0,222';
   datetime datetime_value=TimeCurrent();
   complex  complex_value=1.1+0.1i;
   complexf complexf_value=5.5+0.5i;
   string   string_value="the quick brown fox jumps over the lazy dog";
//--- CSV-Datei zum Schreiben öffnen
   int file_handle=FileOpen("test.csv",FILE_CSV|FILE_WRITE|FILE_ANSI);
//--- 13 Variablen verschiedener Typen schreiben
   written=FileWrite(file_handle,bool_value,char_value,short_value,int_value,long_value,float_value,double_value,color1_value,color2_value,datetime_value,string_value,complex_value,complexf_value);
   bool_value=false;
   char_value=124;
   short_value=12347;  
   int_value=1234569;
   long_value=5001000000;
//--- 13 Variablen in die zweite Zeile der CSV-Datei schreiben
   written+=FileWrite(file_handle,bool_value,char_value,short_value,int_value,long_value,float_value,double_value,color1_value,color2_value,datetime_value,string_value,complex_value,complexf_value);
   bool_value=false;
   char_value=125;
   short_value=12349;  
   int_value=1234571;
   long_value=5002000000;
//--- 13 Variablen in die dritte Zeile der CSV-Datei schreiben
   written+=FileWrite(file_handle,bool_value,char_value,short_value,int_value,long_value,float_value,double_value,color1_value,color2_value,datetime_value,string_value,complex_value,complexf_value);
   FileClose(file_handle);
   Print(written," bytes written");
   bool     bool_value2;
   char     char_value2;
   short    short_value2;  
   int      int_value2;
   long     long_value2;
   float    float_value2;
   double   double_value2;
   color    color1_value2;
   color    color2_value2;
   datetime datetime_value2;
   complex  complex_value2;
   complexf complexf_value2;
   string   string_value2;
   string   string2_value="untouched string";
//--- geschriebene CSV-Datei zum Lesen öffnen
   file_handle=FileOpen("test.csv",FILE_CSV|FILE_READ|FILE_ANSI);
//--- versuchen, 1 Variable mehr zu lesen, als in der Zeile vorhanden ist
   read=FileRead(file_handle,bool_value2,char_value2,short_value2,int_value2,long_value2,float_value2,double_value2,color1_value2,color2_value2,datetime_value2,string_value2,complex_value2,complexf_value2,string2_value);
   FileClose(file_handle);
   Print("read ",read," variables");
   Print(bool_value2," ",char_value2," ",short_value2," ",int_value2," ",long_value2," ",float_value2," ",double_value2," ",color1_value2," ",color2_value2," ",datetime_value2," ",string_value2," ",complex_value2," ",complexf_value2," ",string2_value);
   string txt_line1,txt_line2,txt_line3;
//--- geschriebene Datei als Textdatei öffnen
   file_handle=FileOpen("test.csv",FILE_TXT|FILE_READ|FILE_ANSI);
//--- 3 Zeilen aus der Textdatei lesen
   read=FileRead(file_handle,txt_line1,txt_line2,txt_line3);
   Print("\nread ",read," lines");
   FileClose(file_handle);
//--- visuell prüfen, dass dies genau die geschriebenen Zeilen sind
   Print(txt_line1);
   Print(txt_line2);
   Print(txt_line3);
//--- Binärdatei zum Schreiben öffnen
   file_handle=FileOpen("test.bin",FILE_BIN|FILE_WRITE);
//--- 12 Variablen verschiedener Typen außer string schreiben
   written=FileWrite(file_handle,bool_value,char_value,short_value,int_value,long_value,float_value,double_value,color1_value,color2_value,datetime_value,complex_value,complexf_value);
   FileClose(file_handle);
   Print("");
   Print(written," bytes written");
   bool     bool_value3;
   char     char_value3;
   short    short_value3;  
   int      int_value3;
   long     long_value3;
   float    float_value3;
   double   double_value3;
   color    color1_value3;
   color    color3_value3;
   datetime datetime_value3;
   complex  complex_value3;
   complexf complexf_value3;
//--- geschriebene Binärdatei zum Lesen öffnen
   file_handle=FileOpen("test.bin",FILE_BIN|FILE_READ);
//--- 12 Variablen derselben Typen lesen
   read=FileRead(file_handle,bool_value3,char_value3,short_value3,int_value3,long_value3,float_value3,double_value3,color1_value3,color3_value3,datetime_value3,complex_value3,complexf_value3);
   FileClose(file_handle);
   Print("read ",read," variables");
//--- visuell prüfen, dass die Daten korrekt gelesen wurden
   Print(bool_value3," ",char_value3," ",short_value3," ",int_value3," ",long_value3," ",float_value3," ",double_value3," ",color1_value3," ",color3_value3," ",datetime_value3," ",complex_value3," ",complexf_value3);
  }

Ausgabe im Expertenjournal

554 bytes written
read 13 variables
true 123 12345 1234567 5000000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 the quick brown fox jumps over the lazy dog (1.1,0.1) (5.5,0.5) untouched string
 
read 3 lines
true 123 12345 1234567 5000000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 the quick brown fox jumps over the lazy dog (1.1,0.1) (5.5,0.5)
false 124 12347 1234569 5001000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 the quick brown fox jumps over the lazy dog (1.1,0.1) (5.5,0.5)
false 125 12349 1234571 5002000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 the quick brown fox jumps over the lazy dog (1.1,0.1) (5.5,0.5)
 
68 bytes written
read 12 variables
false 125 12349 1234571 5002000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 (1.1,0.1) (5.5,0.5)

Siehe auch

FileWrite, FileReadNumber, FileReadBool, FileReadDateTime