메타 트레이더 폴더 외부에서 데이터를 읽고 쓰는 방법

 

안녕하세요 여러분, 외부 폴더에서 파일을 읽고 쓰는 방법을 도와주시겠습니까? 제가 이해할 수 있도록 작은 코드를 보여 주시겠습니까?

많은 감사

 

WINAPI

포럼을 검색하십시오 많은 예가 있습니다

 
qjol :

WINAPI

포럼을 검색하십시오 많은 예가 있습니다


안녕하세요 답장을 보내주셔서 감사합니다만 csv 형식으로 데이터를 작성하고 싶습니다. 제가 보는 모든 예는 텍스트 형식에 대한 것입니다. 어떻게 얻을 수 있도록 도와주시겠습니까 ???
 
ankityadav :

안녕하세요 답장을 보내주셔서 감사합니다만 csv 형식으로 데이터를 작성하고 싶습니다. 제가 보는 모든 예는 텍스트 형식에 대한 것입니다. 어떻게 얻을 수 있도록 도와주시겠습니까 ???

먼저 작동하도록 합니다. 그러면 다음에 무엇을 해야 하는지 알게 될 것입니다.
 
deysmacro :

먼저 작동하도록 합니다. 그러면 다음에 무엇을 해야 하는지 알게 될 것입니다.

답장해주셔서 감사합니다만 다른 폴더에서 파일을 읽고 파일을 쓰려고 할 때 작동하지 않습니다
 //+------------------------------------------------------------------+
//|                                              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
디렉토리를 C:\로 변경하고 test.txt가 생성되었는지 확인하십시오.
 
deysmacro :
디렉토리를 C:\로 변경하고 test.txt가 생성되었는지 확인하십시오.

나는 그것을 다운로드 폴더에 넣은 것을 이해하지 못하고 두 파일을 모두 생성했지만 작동하지 않고 당신의 말을 이해하지 못합니다 ?? 파일을 c:folder에 넣어야 합니까 ???
 
 

감사하지만 커널을 사용하고 지금은 Winfile을 사용하기 전에는 이해할 수 없습니다 ????
 
ankityadav :

감사하지만 커널을 사용하고 지금은 Winfile을 사용하기 전에는 이해할 수 없습니다 ????

살펴보았습니까? kernel32 를 검색합니다.
 
gooly :

살펴보았습니까? kernel32를 검색합니다.

감사합니다 나는 이미 이것을 검색하고 있지만 어떤 폴더의 csv 파일에서 파리 읽기 쓰기 작업의 샘플을 알려주실 수 있습니까 ??