- тикет сделки из MQLTradeResult
- Советники: ModStopReverse v_7_alligator
- Ошибки, баги, вопросы
FileOpen - too many opened files - слишком много открытых файлов.
спасибо, ето я знаю, но как применить ето к данной ситуации ?, получается что открываемые html файлы не были закрыты или как ? но функция FileClose(), присутсвует потому не должно такого быть
Invest777, у Вас не происходит закрытие файла. Файл открывается, до закрытия не доходит, так как команда закрытия файла лежит внутри тела условного оператора. В результате того, что условие не выполняется, команда закрытия файла попросту игнорируется. Советник выходит из подпрограммы и на следующем тике всё повторяется. Файл снова открыт и снова не закрыт и так до тех пор, пока разрешённый максимум открытых файлов ни сравняется с тем числом, которое понаоткрывал советник.
В случае, если открываемый Вами файл содержит всего одну строку (или файл пустой), то что происходит? В цикле счётчик строк принимает значение = 1, и сразу за циклом Вы вычитаете 1 из счётчика - он обнуляется. Далее Вы проверяете, если счётчик более нуля, то отдаёте приказ закрыть файл. А если менее нуля или равно нулю? То файл остаётся открыт!!!
Уберите команду закрытия файла из тела условного оператора - файл нужно закрывать безусловно. Ну или писать лишний код, который закроет файл в случае возникновения внештатных ситуаций.
Invest777, у Вас не происходит закрытие файла. Файл открывается, до закрытия не доходит, так как команда закрытия файла лежит внутри тела условного оператора. В результате того, что условие не выполняется, команда закрытия файла попросту игнорируется. Советник выходит из подпрограммы и на следующем тике всё повторяется. Файл снова открыт и снова не закрыт и так до тех пор, пока разрешённый максимум открытых файлов ни сравняется с тем числом, которое понаоткрывал советник.
В случае, если открываемый Вами файл содержит всего одну строку (или файл пустой), то что происходит? В цикле счётчик строк принимает значение = 1, и сразу за циклом Вы вычитаете 1 из счётчика - он обнуляется. Далее Вы проверяете, если счётчик более нуля, то отдаёте приказ закрыть файл. А если менее нуля или равно нулю? То файл остаётся открыт!!!
Уберите команду закрытия файла из тела условного оператора - файл нужно закрывать безусловно. Ну или писать лишний код, который закроет файл в случае возникновения внештатных ситуаций.
спасибо большое за розяснение , буду пробывать, так как я логически тоже понимаю проблему, но вопрос как в коде все правельно описать, вроде функция закрытия файла присутствует, потому нелогично что файлы остаються открытыми.А если ошибка закрытия, то по какой причине ...
спасибо большое за розяснение, буду пробывать, так как я логически тоже понимаю проблему, но вопрос как в коде все правельно описать, вроде функция закрытия файла присутствует, потому нелогично что файлы остаються открытыми.А если ошибка закрытия, то по какой причине ...
Вот так:
// ------------------- FileTodayCreate() --------------------------------------------------------- // функция создаёт файл-выборку из указанного файла в указанный файл // ----------------------------------------------------------------- void FileTodayCreate(string DB_File,string RezFile){ string NameFunction="FileTodayCreate()",Stroka,s_TempDate,s_TempTime,s_Rezult; int SchStrokInFile; int Fl_Hndl=(-1); SchStrokInFile=(-1); SchStrokInFile=SchFileStrok(DB_File); Fl_Hndl=FileOpen(DB_File,FILE_CSV|FILE_READ,";");// открываем основной файл (базу данных). if(Fl_Hndl>(-1)){ for(int down=1;down<=SchStrokInFile;down++){ // тут у Вас что-то происходит в цикле } } FileClose(Fl_Hndl);// Закрываем файл }
а вот еще вопрос по массивам, если использовать функцию ArrayInitialize, с помощью нее можно обнулить массив типа double, но как обнулить массив типа string ?
в цикле.
а можно пожалуйсто в коде описать ?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования