FileOpen - operațiuni de fișier - MQL4 de referință - documentația MQL4

[În] Numele fișierului care poate conține subfoldere. Dacă fișierul este deschis pentru scris, atunci va fi creat aceste sub-dosare în absența lor.

[Într] o combinație de steaguri. determină modul de operare cu fișierul. Steagurile sunt definite după cum urmează:
fișier FILE_READ este deschis pentru citire
fișier FILE_WRITE este deschis pentru scriere
Modul binar FILE_BIN citire-scriere (cu nici o conversie a unui șir de caractere și un șir de caractere)
FILE_CSV tip de fișier csv (toate elementele înregistrate sunt convertite în șiruri de tip, unicode sau ansi corespunzătoare și separate prin separator)
FILE_TXT un fișier text simplu (același CSV, dar separatorul nu este luată în considerare)
FILE_ANSI linie tip ANSI (caractere pe un octet)
FILE_UNICODE linie tip UNICODE (simboluri duble byte)
FILE_SHARE_READ partajate citirea din mai multe programe
FILE_SHARE_WRITE de partajare a înregistrărilor din mai multe programe
FILE_COMMON locația unui fișier într-un folder partajat de toate terminalele client \ Terminal \ Common \ Fișiere

[În] valoare utilizată ca separator în txt sau csv-file. În cazul în care delimitatorul csv-fișier nu este specificat, implicit „;“. În cazul în care separatorul nu este specificat, nu separator este utilizat pentru txt fișiere. În cazul în care separatorul este setat în mod clar la 0, atunci se utilizează nici un separator.

[În] Opțional. Valoarea paginii de cod. Pentru paginile de cod cele mai frecvent utilizate sunt furnizate constante corespunzătoare.

Daca va avea succes, funcția returnează mânerul de deschidere a fișierului, care este apoi utilizat pentru a accesa datele de fișier. În caz de eșec se întoarce INVALID_HANDLE.

Din motive de siguranță, în MQL4 este controlată strict de lucru cu fișiere. Fișierele, care fișier operațiunile sunt efectuate prin intermediul MQL4, nu poate fi în afara fișierului „Sandbox“.

Fișierul este deschis în dosarul terminalului client din sub-directorul MQL4 \ Files (sau Tester \ fișiere, în cazul testării). Dacă printre steagurile Set FILE_COMMON, apoi se deschide fișierul într-un dosar comun al tuturor terminalelor client \ Terminal \ Common \ Files.

Puteți deschide „named pipes“ de următoarele reguli:

  • Nume canal - un șir de caractere care ar trebui să fie de forma: „\\ numeserver \ țeavă \ pipename“, în cazul în care numeserver - numele serverului pe rețea, și pipename - numele canalului. În cazul în care canalele sunt utilizate pe același computer, numele serverului poate fi omisă, dar în schimb este necesar pentru a pune punctul: „\\ \ țeavă \ pipename“. Un client care încearcă să se conecteze cu canalul trebuie să știe numele său.
  • Este necesar de a provoca FileFlush () și FileSeek () la începutul fișierului între operațiile de citire succesive de pe canal și înregistrarea canalului.

În aceste linii, un backslash special „\“, astfel încât atunci când scrieți numele în programul MQL4 „\“ trebuie să fie dublu, adică, în exemplul de mai sus pentru a scrie un cod ca „\\\\ ServerName \\ țeavă \\ pipename“.

Pentru mai multe informații despre lucrul cu țevile numit puteți citi în articolul „Comunicarea cu MetaTrader 5 prin conducte numite fără utilizarea DLL“

// + ----------------------------------------------- ------------------- +
// | Script funcția de pornire a programului |
// + ----------------------------------------------- ------------------- +
anula OnStart ()
<
// --- mod greșit de a deschide un fișier
terminal_data_path string = TerminalInfoString (TERMINAL_DATA_PATH);
string filename = terminal_data_path + "\\ MQL4 \\ Files" + "fractals.csv";
int filehandle = FileOpen (nume de fișier, FILE_WRITE | FILE_CSV);
în cazul în care (filehandle<0)
<
Print ( „Încercarea de a deschide fișierul folosind o cale absolută“);
Print ( "Error Code" GetLastError ().);
>
// --- modul corect de a lucra în „sandbox fișierul“
ResetLastError ();
filehandle = FileOpen ( "fractals.csv" FILE_WRITE | FILE_CSV.);
în cazul în care (filehandle! = INVALID_HANDLE)
<
FileWrite (filehandle, TimeCurrent (), simbolul (), EnumToString (ENUM_TIMEFRAMES (_Period)));
FileClose (filehandle);
Print ( "FileOpen OK");
>
Print altceva ( "operațiune FileOpen eșuează, o eroare" GetLastError ().);
// --- un alt exemplu cu crearea de directoare imbricate în MQL4 \ Files \
subfolder string = "cercetare";
filehandle = FileOpen (subfolder + "\\ fractals.txt" FILE_WRITE | FILE_CSV.);
în cazul în care (filehandle! = INVALID_HANDLE)
<
FileWrite (filehandle, TimeCurrent (), simbolul (), EnumToString (ENUM_TIMEFRAMES (_Period)));
FileClose (filehandle);
Print ( "Fișierul trebuie să fie creat în directorul" + terminal_data_path + "" + subfolder);
>
Print altceva ( "operațiune FileOpen eșuează, o eroare" GetLastError ().);
>