Ну, в первом примере вроде ясно, ты после первой же итерации цикла закрываешь файл и во второй определителя файла уже нет. А второй пример вообще не могу понять, что к чему.
Ну, в первом примере вроде ясно, ты после первой же итерации цикла закрываешь файл и во второй определителя файла уже нет. А второй пример вообще не могу понять, что к чему.
В первом примере - скрипте, в цикле всего одна строка участвует - заполнение массива, там нет ни открвающей, ни закрывающей фигурной скобки. И если файл даже закрылся бы в первой итерации - все равно он открылся бы повторно, потому как именно это в коде и написано - в переменную handle помещается дескриптор уже после закрытия. Даже написал, что скрипт работает, а советник нет.
Во втором в функции init считываются данные в массивы уже из файла, который создал скрипт.
А проблема была в том, что файл находился не в Tester/files а в expert/files, я не знал, что для отладчика есть своя папка.
Но все равно, спасибо что ответили.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
#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 Невозможно открыть файл)
Не подскажете в чем проблема?
Спасибо