Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Используй MQL5 Cloud Network. Тестируй роботов с гиперскоростью!
Alexandr Bryzgalov
23859
Alexandr Bryzgalov 2012.07.08 18:30 

Соорудил вот такой скрипт, но почему-то некоторые значения не прописывает в файл, не понимаю(не знаю, и не понимаю как узнать) почему.

Большая часть скрипта взята от сюда. В переменную файл имя файла попадает, но не прописывает это имя в файл.

#import "kernel32.dll"
int  FindFirstFileA(string path, int& answer[]);
bool FindNextFileA(int handle, int& answer[]);
bool FindClose(int handle);
#import
 

extern int TimeRefresh=60;

string FileName[100];
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{
   int StartTime=GetTickCount();
   Spisok_FileName();
   if(!SendFTP("info.txt"))
   {
      Print("Ошибка отправки файла #", GetLastError());
      return;//continue;
   }
   Print("Файл успешно отправлен.");
   StartTime=GetTickCount();
   Comment(TimeCurrent());
   Sleep(1000);
   return(0);
}
void Spisok_FileName()
{
   int win32_DATA[79];
   int handle = FindFirstFileA(TerminalPath() + "\experts\files\*.txt",win32_DATA);
   Print(bufferToString(win32_DATA));
   ArrayInitialize(win32_DATA,0);
   int i=0;
   int handle_=FileOpen("info.txt",FILE_WRITE|FILE_CSV,";");
   if(handle_==(-1))
   {
      Print("Файл info.txt не обнаружен, последняя ошибка ", GetLastError());
      return(-1);//continue;
   }
   while (FindNextFileA(handle,win32_DATA))
   {
      string FileName=bufferToString(win32_DATA);
      if(FileName=="info.txt")
      {
         continue;
      }
      int handle1=FileOpen(FileName,FILE_READ,";");
      Print(FileName+" "+FileSize(handle1)," ",GetLastError());
      if(handle1==(-1))
      {
         Print("Ошибка открытия файла "+FileName+" : ", GetLastError());
         continue;
      }
      FileSeek(handle1,0,SEEK_SET);
      string stroka=FileReadString(handle1);
      FileClose(handle1);
      FileWrite(handle_,FileName+"/"+stroka);
      ArrayInitialize(win32_DATA,0);
   }
   FileClose(handle_);
   if (handle>0) FindClose(handle);
   
//----
   return(0);
}
string bufferToString(int buffer[])
{
   string text="";
   
   int pos = 10;
   for (int i=0; i<64; i++)
      {
      pos++;
      int curr = buffer[pos];
      text = text + CharToStr(curr & 0x000000FF)
         +CharToStr(curr >> 8 & 0x000000FF)
         +CharToStr(curr >> 16 & 0x000000FF)
         +CharToStr(curr >> 24 & 0x000000FF);
      }
   return (text);
}



Alexandr Bryzgalov
23859
Alexandr Bryzgalov 2012.07.08 20:20  

вот так правильней будет

#import "kernel32.dll"
int  FindFirstFileA(string path, int& answer[]);
bool FindNextFileA(int handle, int& answer[]);
bool FindClose(int handle);
#import
 

extern int TimeRefresh=60;

string FileName[100];
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{
   int StartTime=GetTickCount();
   Spisok_FileName();
   if(!SendFTP("info.txt"))
   {
      Print("Ошибка отправки файла #", GetLastError());
      return;//continue;
   }
   Print("Файл успешно отправлен.");
   StartTime=GetTickCount();
   Comment(TimeCurrent());
   Sleep(1000);
   return(0);
}
void Spisok_FileName()
{
   int win32_DATA[79];
   int handle = FindFirstFileA(TerminalPath() + "\experts\files\*.txt",win32_DATA);
   string FileName=bufferToString(win32_DATA);
   ArrayInitialize(win32_DATA,0);
   int handle_=FileOpen("info.txt",FILE_WRITE|FILE_CSV,";");
   if(handle_==(-1))
   {
      Print("Файл info.txt не обнаружен, последняя ошибка ", GetLastError());
      return(-1);//continue;
   }
   FileWrite(handle_,FileName+"/"+FileRead_(FileName));
   while (FindNextFileA(handle,win32_DATA))
   {
      FileName=bufferToString(win32_DATA);
      if(FileName=="info.txt")
      {
         Print(FileName);
         continue;
      }
      FileWrite(handle_,FileName+"/"+FileRead_(FileName));
      ArrayInitialize(win32_DATA,0);
   }
   FileClose(handle_);
   if (handle>0) FindClose(handle);
   
//----
   return(0);
}
string bufferToString(int buffer[])
{
   string text="";
   
   int pos = 10;
   for (int i=0; i<64; i++)
      {
      pos++;
      int curr = buffer[pos];
      text = text + CharToStr(curr & 0x000000FF)
         +CharToStr(curr >> 8 & 0x000000FF)
         +CharToStr(curr >> 16 & 0x000000FF)
         +CharToStr(curr >> 24 & 0x000000FF);
      }
   return (text);
}
string FileRead_(string FileName)
{
   string res="";
   int handle_=FileOpen(FileName,FILE_READ|FILE_CSV,";");
   if(handle_==(-1))
   {
      Print("Файл "+FileName+" не обнаружен, последняя ошибка ", GetLastError());
      return("");//continue;
   }
   res=FileReadString(handle_);
   Print(FileName,"/",res);
   FileClose(handle_);
   return (res);
}

ЗЫ: "спасение утопающих - дело рук самих утопающих" (с)

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий