Ich habe nicht oft mit files zutun, aber sowie du das oben programmiert hast, sind das zwei unterschiedliche files. einmal FILE_CSV und einmal FILE_TXT und einmal file_name und dann FileName.
willst du die files nur auslesen oder auch schreiben? weil dann müsste noch FILE_WRITE in die FileOpen() eingefügt werden. Ansonsten frage ch mich gerade, was es mit der flag FILE_SHARE_READ auf sich hat und ob dir diese in deinem Fall von Nutzen sein könnte.
Ich glaube auch nicht, dass in ein file geschrieben werde kann, während ein anderer EA es zum lesen offen hat. jedenfalls würde ich die Datei immer nacheinander öffnen.
Das ist ein von Carl stammender CodeSchnipsel, der für das Schreiben von files funktioniert (zumindest bei mir). Der Code schreibt zeilenweise eine CSV und fügt ihr bei jedem neuen öffnen eine neue Zeile hinzu
willst du die files nur auslesen oder auch schreiben? weil dann müsste noch FILE_WRITE in die FileOpen() eingefügt werden. Ansonsten frage ch mich gerade, was es mit der flag FILE_SHARE_READ auf sich hat und ob dir diese in deinem Fall von Nutzen sein könnte.
Ich glaube auch nicht, dass in ein file geschrieben werde kann, während ein anderer EA es zum lesen offen hat. jedenfalls würde ich die Datei immer nacheinander öffnen.
Das ist ein von Carl stammender CodeSchnipsel, der für das Schreiben von files funktioniert (zumindest bei mir). Der Code schreibt zeilenweise eine CSV und fügt ihr bei jedem neuen öffnen eine neue Zeile hinzu
//use: addLineToFileCommon("line\n", "folder\\name.txt"); // shared=true, maxPrt=10 bool addLineToFileCommon(const string line, const string fName, const bool shared = true, const int maxPrt=10) { ResetLastError(); static int nErr=0; int fH; if ( shared ) fH = FileOpen(fName,FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON|FILE_SHARE_READ|FILE_SHARE_WRITE); else fH = FileOpen(fName,FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON); if (fH == INVALID_HANDLE ) { if (nErr<maxPrt) Print("Common-File: >"+fName+"< Open FAILED err:",_LastError); return(false); } FileSeek(fH,0,SEEK_END); FileWriteString(fH, line, StringLen(line) ); FileClose(fH); if (_LastError<2) return(true); if (nErr<maxPrt) ErrT("Write to Common-file: "+fName+" went wrong?"); return(false); }
Was es mit den Flags auf sich hat, kann hier nachgelesen werden: https://www.mql5.com/de/docs/constants/io_constants/fileflags
Dort wird auch erklärt, inwiefern die Öffnung einer Datei als CSV oder als TXT zu unterschiedlichem Leseverhalten der Read-Methoden führt.
Documentation on MQL5: Constants, Enumerations and Structures / Input/Output Constants / File Opening Flags
- www.mql5.com
File Opening Flags - Input/Output Constants - Constants, Enumerations and Structures - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich habe einen EA, der empfangene Textnachrichten ausliest, auswertet und die Handlungsinformation in ein TextFile speichert.
Das File wurde erzeugt mit
Andere EAs- die mehrfach vorkommen - lesen dieses Textfile aus und schießen es dann wieder mit
Leider kommt es vor, dass nicht alle Textnachrichten zuverlässig in das File geschrieben werden.
Woran kann das liegen?
Kann in das Textfile geschrieben werden, während ein andere EA es zum Auslesen offen hat?