Come leggere e scrivere dati dall'esterno della cartella metatrader

 

WINAPI

cerca nel forum ci sono molti esempi

 
qjol:

WINAPI

cerca nel forum ci sono molti esempi


Ciao grazie per la tua risposta ma voglio scrivere i dati in formato csv e tutti gli esempi che vedo sono per il formato testo puoi per favore aiutare hw per ottenere questo??
 
ankityadav:

Ciao, grazie per la tua risposta, ma voglio scrivere i dati in formato csv e tutti gli esempi che vedo sono per il formato testo, puoi per favore aiutare come ottenerlo?

Fallo funzionare prima. Poi saprete cosa fare dopo.
 
deysmacro:

Prima fatelo funzionare. Poi saprete cosa fare dopo.

Grazie per la tua risposta ma non funziona quando cerco di leggere il file da una cartella diversa e scrivere il file
//+------------------------------------------------------------------+
//|                                              File Read Write.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

// êîíñòàíòû äëÿ ôóíêöèè _lopen
#define  OF_READ               0
#define  OF_WRITE              1
#define  OF_READWRITE          2
#define  OF_SHARE_COMPAT       3
#define  OF_SHARE_DENY_NONE    4
#define  OF_SHARE_DENY_READ    5
#define  OF_SHARE_DENY_WRITE   6
#define  OF_SHARE_EXCLUSIVE    7

#import "kernel32.dll"
   int _lopen  (string path, int of);
   int _lcreat (string path, int attrib);
   int _llseek (int handle, int offset, int origin);
   int _lread  (int handle, string buffer, int bytes);
   int _lwrite (int handle, string buffer, int bytes);
   int _lclose (int handle);
#import

// _lopen  : Îòêpûâàåò óêàçàííûé ôàéë. Âîçâpàùàåò: îïèñàòåëü ôàéëà.
// _lcreat : Ñîçäàåò óêàçàííûé ôàéë.   Âîçâpàùàåò: îïèñàòåëü ôàéëà.
// _llseek : Óñòàíàâëèâàåò óêàçàòåëü â îòêpûòîì ôàéëå. Âîçâpàùàåò: 
// íîâîå ñìåùåíèå óêàçàòåëÿ.
// _lread  : Ñ÷èòûâàåò èç îòêpûòîãî ôàéëà óêàçàííîå ÷èñëî áàéò. 
// Âîçâpàùàåò: ÷èñëî ñ÷èòàííûõ áàéò; 0 - åñëè êîíåö ôàéëà.
// _lwrite : Çàïèñûâàåò äàííûå èç áóôåpà â óêàçàííûé ôàéë. Âîçâpàùàåò: 
// ÷èñëî çàïèñàííûõ áàéò.
// _lclose : Çàêpûâàåò óêàçàííûé ôàéë. Âîçâpàùàåò: 0.
//  ñëó÷àå íåóñïåøíîãî çàâåpøåíèÿ âñå ôóíêöèè âîçâðàùàþò çíà÷åíèå 
// HFILE_ERROR=-1.
 
// path   : Ñòpîêà, îïpåäåëÿþùàÿ ïóòü è èìÿ ôàéëà.
// of     : Ñïîñîá îòêðûòèÿ.
// attrib : 0 - ÷òåíèå èëè çàïèñü; 1 - òîëüêî ÷òåíèå; 2 - íåâèäèìûé èëè 
// 3 - ñèñòåìíûé.
// handle : Ôàéëîâûé îïèñàòåëü.
// offset : ×èñëî áàéò, íà êîòîpîå ïåpåìåùàåòñÿ óêàçàòåëü.
// origin : Óêàçûâàåò íà÷àëüíóþ òî÷êó è íàïpàâëåíèå ïåpåìåùåíèÿ: 0 - 
// âïåpåä îò íà÷àëà; 1 - ñ òåêóùåé ïîçèöèè; 2 - íàçàä îò êîíöà ôàéëà.
// buffer : Ïpèíèìàþùèé/çàïèñûâàåìûé áóôåp.
// bytes  : ×èñëî ñ÷èòûâàåìûõ áàéò.
 
// Ñïîñîáû îòêðûòèÿ (ïàðàìåòð of):
// int OF_READ            =0; // Îòêðûòü ôàéë òîëüêî äëÿ ÷òåíèÿ
// int OF_WRITE           =1; // Îòêðûòü ôàéë òîëüêî äëÿ çàïèñè
// int OF_READWRITE       =2; // Îòêðûòü ôàéë â ðåæèìå çàïèñü/÷òåíèå
// int OF_SHARE_COMPAT    =3; // Îòêðûâàåò ôàéë â ðåæèìå îáùåãî 
// ñîâìåñòíîãî äîñòóïà. Â ýòîì ðåæèìå ëþáîé ïðîöåññ ìîæåò îòêðûòü äàííûé 
// ôàéë ëþáîå êîëè÷åñòâî ðàç. Ïðè ïîïûòêå îòêðûòü ýòîò ôàéë â ëþáîì äðóãîì
// ðåæèìå, ôóíêöèÿ âîçâðàùàåò HFILE_ERROR.
// int OF_SHARE_DENY_NONE =4; // Îòêðûâàåò ôàéë â ðåæèìå îáùåãî äîñòóïà 
// áåç çàïðåòà íà ÷òåíèå/çàïèñü äðóãèì ïðîöåññàì. Ïðè ïîïûòêå îòêðûòèÿ 
// äàííîãî ôàéëà â ðåæèìå OF_SHARE_COMPAT, ôóíêöèÿ âîçâðàùàåò HFILE_ERROR.
// int OF_SHARE_DENY_READ =5; // Îòêðûâàåò ôàéë â ðåæèìå îáùåãî äîñòóïà ñ 
// çàïðåòîì íà ÷òåíèå äðóãèì ïðîöåññàì. Ïðè ïîïûòêå îòêðûòèÿ äàííîãî ôàéëà 
// ñ ôëàãàìè OF_SHARE_COMPAT è/èëè OF_READ èëè OF_READWRITE, ôóíêöèÿ 
// âîçâðàùàåò HFILE_ERROR.
// int OF_SHARE_DENY_WRITE=6; // Òîæå ñàìîå, òîëüêî ñ çàïðåòîì íà çàïèñü.
// int OF_SHARE_EXCLUSIVE =7; // Çàïðåò òåêóùåìó è äðóãèì ïðîöåññàì íà 
// äîñòóï ê ýòîìó ôàéëó â ðåæèìàõ ÷òåíèÿ/çàïèñè. Ôàéë â ýòîì ðåæèìå ìîæíî 
// îòêðûòü òîëüêî îäèí ðàç (òåêóùèì ïðîöåññîì). Âñå îñòàëüíûå ïîïûòêè 
// îòêðûòèÿ ôàéëà áóäóò ïðîâàëåíû.
//+------------------------------------------------------------------+
//|   ïðî÷èòàòü ôàéë è âåðíóòü ñòðîêó ñ ñîäåðæèìûì                   |
//+------------------------------------------------------------------+

int start()
  {
//----
    string buffer=ReadFile("C:\Documents and Settings\Administrator\My Documents\Downloads\test.txt");
    int count=StringLen(buffer);
    Print("Ïðî÷èòàíî áàéò:",count);
    WriteFile("C:\Documents and Settings\Administrator\My Documents\Downloads\test2.txt",buffer);   
//----
   return(0);
  }
  
  string ReadFile (string path) 
  {
    int handle=_lopen (path,OF_READ);           
    if(handle<0) 
      {
        Print("Îøèáêà îòêðûòèÿ ôàéëà ",path); 
        return ("");
      }
    int result=_llseek (handle,0,0);      
    if(result<0) 
      {
        Print("Îøèáêà óñòàíîâêè óêàçàòåëÿ" ); 
        return ("");
      }
    string buffer="";
    string char1="x";
    int count=0;
    result=_lread (handle,char1,1);
    while(result>0) 
      {
        buffer=buffer+char1;
        char1="x";
        count++;
        result=_lread (handle,char1,1);
     }
    result=_lclose (handle);              
    if(result<0)  
      Print("Îøèáêà çàêðûòèÿ ôàéëà ",path);
    return (buffer);
  }
 
//+------------------------------------------------------------------+
//|  çàïèñàòü ñîäåðæèìîå áóôåðà ïî óêàçàííîìó ïóòè                   |
//+------------------------------------------------------------------+
void WriteFile (string path, string buffer) 
  {
    int count=StringLen (buffer); 
    int result;
    int handle=_lopen (path,OF_WRITE);
    if(handle<0) 
      {
        handle=_lcreat (path,0);
        if(handle<0) 
          {
            Print ("Îøèáêà ñîçäàíèÿ ôàéëà ",path);
            return;
          }
        result=_lclose (handle);
     }
    handle=_lopen (path,OF_WRITE);               
    if(handle<0) 
      {
        Print("Îøèáêà îòêðûòèÿ ôàéëà ",path); 
        return;
      }
    result=_llseek (handle,0,0);          
    if(result<0) 
      {
        Print("Îøèáêà óñòàíîâêè óêàçàòåëÿ"); 
        return;
      }
    result=_lwrite (handle,buffer,count); 
    if(result<0)  
        Print("Îøèáêà çàïèñè â ôàéë ",path," ",count," áàéò");
    result=_lclose (handle);              
    if(result<0)  
        Print("Îøèáêà çàêðûòèÿ ôàéëà ",path);
  }
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
 
C:\Documents and Settings\Administrator\My Documents\Downloads\test.txt
Basta cambiare la directory in C:\ e assicurarsi che test.txt sia creato da voi.
 
deysmacro:
Basta cambiare la directory in C:\ e assicurarsi che test.txt sia creato da voi.

Non capisco, l'ho messo nella cartella download e ho creato entrambi i file ma non funziona e non capisco cosa stai dicendo? È necessario mettere il file nella cartella c:\?
 
 

Grazie ma non capisco, prima sto usando il kernel e ora Winfile ????
 
ankityadav:

Grazie ma non capisco, prima sto usando il kernel e ora Winfile ????

L'hai guardato? Cerca kernel32.
 
gooly:

Cercate kernel32.

Grazie, ho già cercato questo, ma puoi farmi sapere un esempio di flie read write operaton in file csv in qualsiasi cartella?
Motivazione: