Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Benötige Hilfe zu: MQL4, FileOpen und while (http://www.expert-advisor.com/forum/showthread.php?t=2521)

jaaam 14.11.12 07:52

Benötige Hilfe zu: MQL4, FileOpen und while
 
Hallo,

ich bin dabei, MQL4 zu lernen und stoße nun auf ein Problem, zu dessen Lösung ich nichts gefunden habe.

Es geht eigentlich erstmal nur darum, dass in einem bestimmten Intervall (Sleep) eine lokal abgelegte CSV-Datei geöffnet werden soll. Das funktioniert aber nur 1 mal (lt. Print() ).

Code:

int start() {
  csv();
  Sleep (5000);   
}

int csv() {
 
  Print ( "int csv wird ausgeführt" );
  string csv_datei = "test.csv";
  handle = FileOpen(csv_file,FILE_CSV|FILE_READ,";");
  while( !FileIsEnding(handle)  ) {
      // ...
    }
    FileClose( handle );
  }
}

Meine 2. Frage:
In der CSV-Datei existieren 2 Zeilen. Diese jetzt auszulesen mache ich mit:

Code:

...
while ( !FileIsEnding(handle) ) {

  string text1_1      = FileReadString(handle); // 1. Zeile
  string text1_2      = FileReadString(handle); // 2. Zeile
  (...)

}
...

Wenn ich aber nun nicht weiß, wie viele Zeilen die Datei hat, muss das doch irgendwie dynamisch gehen...

naranjoe 14.11.12 15:34

Hallo,

Zitat:

Das funktioniert aber nur 1 mal (lt. Print() ).
Wenn die Datei leer ist, bleibt er bei !FileIsEnding hängen.
Die Datei sollte mind. 1 Zeile enthalten.

Zitat:

Wenn ich aber nun nicht weiß, wie viele Zeilen die Datei hat,
muss das doch irgendwie dynamisch gehen...
Korrekt.
Ich würde es mit einem dynamischen Array versuchen.
Code:

string Testarray[];

int csv()
  { 
  Print ( "int csv wird ausgeführt" );
  string csv_file = "test.csv";
  handle = FileOpen(csv_file,FILE_CSV|FILE_READ,";");
  int i = 0;
  while( !FileIsEnding(handle)  )
  {   
    ArrayResize(Testarray, i+1);
    Testarray[i]= FileReadString(handle);
    i++;     
  }
  Print ("File has ", i, " lines.");
  FileClose( handle );
}

Gruß
naranjoe


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:11 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum