Скачать MetaTrader 5

чтение из файла

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114280
Forex Trader  
Вот такой вот скрипт работает, и даже выводит все числа через Print() :

#define COUNT     1000

int start()  {
   int handle = FileOpen("I.txt", FILE_WRITE|FILE_BIN);
   if (handle < 1) {
      Print("error open file");
      return(-1);
   }
   
   int values[COUNT];
   for(int i = 1; i < COUNT-1; i++) values[i] = iCustom(NULL, Period(), "separate2", 30, 9, 0, i);
   FileWriteArray(handle, Time, 1, COUNT-1);
   FileWriteArray(handle,  values, 1, COUNT-1);
   FileClose(handle);   
   
   Print("=====");
   
   
   
   
   handle = FileOpen("I.txt", FILE_READ|FILE_BIN);

   if (handle < 1) {
      Print("Error open file #", GetLastError());
      return(-1);
   }
   
   int times[COUNT];
   FileReadArray(handle, times, 1, COUNT-1);
   FileReadArray(handle, values, 1, COUNT-1);
   FileClose(handle);

   for(i = 1; i < COUNT; i++) {
      Print("arr[", i, "] = ",  values[i]);
      Print("times[", i, "] = ", times[i]);
   }
   return(0);
}
//+------------------------------------------------------------------+



эти значения нужны советнику, потому что в отладчике он некорректно видит один ииндикатор, не знаю почему, соответственно пишу в нем

int init() {  
   int handle = FileOpen("I.txt", FILE_READ|FILE_BIN);
   
   if (handle < 1) {
        Print("init() : Error open file #", GetLastError());  //*** Error #4103
        return(-1);
   }
   
   FileReadArray(handle, times, 1, COUNT-1);
   FileReadArray(handle, values, 1, COUNT-1); 
   FileClose(handle);   
   return(0);   
}



Файл I.txt лежит в папке /files, на всякий случай прокопировал директорией выше - там, где лежит советник, все равно не видит и пишет ошибку (ERR_CANNOT_OPEN_FILE 4103 Невозможно открыть файл)

Не подскажете в чем проблема?

Спасибо

Forex Trader
114280
Forex Trader  
Ну, в первом примере вроде ясно, ты после первой же итерации цикла закрываешь файл и во второй определителя файла уже нет. А второй пример вообще не могу понять, что к чему.
Forex Trader
114280
Forex Trader  
Ну, в первом примере вроде ясно, ты после первой же итерации цикла закрываешь файл и во второй определителя файла уже нет. А второй пример вообще не могу понять, что к чему.


В первом примере - скрипте, в цикле всего одна строка участвует - заполнение массива, там нет ни открвающей, ни закрывающей фигурной скобки. И если файл даже закрылся бы в первой итерации - все равно он открылся бы повторно, потому как именно это в коде и написано - в переменную handle помещается дескриптор уже после закрытия. Даже написал, что скрипт работает, а советник нет.

Во втором в функции init считываются данные в массивы уже из файла, который создал скрипт.

А проблема была в том, что файл находился не в Tester/files а в expert/files, я не знал, что для отладчика есть своя папка.

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