Реter Konow: Насколько я знаю, если в файл не вносились изменения с помощью файловых функций (например FileWrite()), то закрывать его не нужно. Функция FileOpen() просто создает новый файл и эта операция не требует закрытия файла (в документации по этой функции, тоже не говорится, что файл нужно после создания закрывать).
Реter Konow: Насколько я знаю, если в файл не вносились изменения с помощью файловых функций (например FileWrite()), то закрывать его не нужно. Функция FileOpen() просто создает новый файл и эта операция не требует закрытия файла (в документации по этой функции, тоже не говорится, что файл нужно после создания закрывать).
А у Вас в примере используется функция FileWrite() сразу после создания файла. А потом используется FileClose(filehandle);
К тому же в приведенном коде скрипта я добавил явное закрытие, но это ничего не решило...
Именно так. Когда я пытаюсь удалить папку уже содержащую подпапки и файлы, то сначала удаляю файлы. Остаются только подпапки. Их пытаюсь очистить с помощью FolderClean() и потом вызываю FolderDelete(). Однако, в результате те подпапки которые были пусты хорошо удаляются, но если внутри подпапок были еще подпапки - они не удаляются. После этого, я пытаюсь удалить папки из файлового навигатора в MetaEditor вручную, но терминал их не удаляет и выскакивает это окно:
Нажимаю на "Continue", соглашаюсь на изменения, но папка все равно не стирается. После полного закрытия и повторного открытия терминала, папки которые должны были быть стерты либо сами исчезают, либо нет, но при этом их уже можно сразу стереть вручную без вышеприведенного окна.
Вот такие странности...
Наблюдал неоднократно такие вещи. Выяснил, что в какой-то момент папка Files со всеми подпапками и файлами получает атрибут read-only. Снятие руками этого флага не помогает. Но всегда помогает перезапуск терминала. Добиться воспроизведения не смог (не пытался), поэтому в СД не сообщал.
Наблюдал неоднократно такие вещи. Выяснил, что в какой-то момент папка Files со всеми подпапками и файлами получает атрибут read-only. Снятие руками этого флага не помогает. Но всегда помогает перезапуск терминала. Добиться воспроизведения не смог (не пытался), поэтому в СД не сообщал.
Спасибо. Рад что я не один с этой проблемой столкнулся. Мне "кровь из носу" нужно решить эту проблему (без этого не могу завершить польз.файловый навигатор). Написал в сервисдек. Но на всякий случай и сюда пишу. Оказалось не зря.)
Этот флаг ставить не нужно, иначе поиск файла будет происходить в общей папке, а ошибка говорит, что задано не верное имя директории.
и с FILE_COMMON и без - работает (первоначально при проверке забыл этот флаг в последний if поставить). С FILE_COMMON подразумевалость что он во всех операциях присутствует
Этот флаг ставить не нужно, иначе поиск файла будет происходить в общей папке, а ошибка говорит, что задано не верное имя директории.
Дорожка к файлу
не требует установки этого флага. Так что все правильно.
Странно всё это. Я заметил что в пути к папкам MQL4 и перекомпилировал код в .ex4 и как ни странно, код отработал без ошибок. Удалил закрытие файла и получил
2017.08.2817:36:18.525 Demo_FolderDelete EURUSD.e,H4: Не удалось удалить папку nonempty. Код ошибки=50252017.08.2817:36:16.985 Demo_FolderDelete EURUSD.e,H4: Не удалось очистить папку nonempty. Код ошибки=5026
Потом без исправлений запустил на мт5 и, как ни странно, упоминание о папке MQL4 было проигнорировано. Папки и файл были созданы в папке MQL5. Дальше всё аналогично проверке в МТ4. Не закрытый файл не удаляется...
2017.08.2817:50:45.328 Demo_FolderDelete (CADJPY,H4) Не удалось очистить папку nonempty. Код ошибки=50252017.08.2817:50:47.958 Demo_FolderDelete (CADJPY,H4) Не удалось удалить папку nonempty. Код ошибки=5024
Странно всё это. Я заметил что в пути к папкам MQL4 и перекомпилировал код в .ex4 и как ни странно, код отработал без ошибок. Удалил закрытие файла и получил
Потом без исправлений запустил на мт5 и, как ни странно, упоминание о папке MQL4 было проигнорировано. Папки и файл были созданы в папке MQL5. Дальше всё аналогично проверке в МТ4. Не закрытый файл не удаляется...
Всмысле Вы сделали из скрипта советник и попробовали его запустить?
Насколько я знаю, если в файл не вносились изменения с помощью файловых функций (например FileWrite()), то закрывать его не нужно. Функция FileOpen() просто создает новый файл и эта операция не требует закрытия файла (в документации по этой функции, тоже не говорится, что файл нужно после создания закрывать).
Ой-ли! Сказочник https://docs.mql4.com/ru/files/fileopen
//--- правильный способ работы в "файловой песочнице"
ResetLastError();
filehandle=FileOpen("fractals.csv",FILE_WRITE|FILE_CSV);
if(filehandle!=INVALID_HANDLE)
{
FileWrite(filehandle,TimeCurrent(),Symbol(), EnumToString(ENUM_TIMEFRAMES(_Period)));
FileClose(filehandle);
Print("FileOpen OK");
}
else Pri
Ой-ли! Сказочник https://docs.mql4.com/ru/files/fileopen
В чем же противоречие с тем, что я сказал?
Я же сказал, -
Реter Konow:
Насколько я знаю, если в файл не вносились изменения с помощью файловых функций (например FileWrite()), то закрывать его не нужно. Функция FileOpen() просто создает новый файл и эта операция не требует закрытия файла (в документации по этой функции, тоже не говорится, что файл нужно после создания закрывать).
А у Вас в примере используется функция FileWrite() сразу после создания файла. А потом используется FileClose(filehandle);
К тому же в приведенном коде скрипта я добавил явное закрытие, но это ничего не решило...
Именно так. Когда я пытаюсь удалить папку уже содержащую подпапки и файлы, то сначала удаляю файлы. Остаются только подпапки. Их пытаюсь очистить с помощью FolderClean() и потом вызываю FolderDelete(). Однако, в результате те подпапки которые были пусты хорошо удаляются, но если внутри подпапок были еще подпапки - они не удаляются. После этого, я пытаюсь удалить папки из файлового навигатора в MetaEditor вручную, но терминал их не удаляет и выскакивает это окно:
Нажимаю на "Continue", соглашаюсь на изменения, но папка все равно не стирается. После полного закрытия и повторного открытия терминала, папки которые должны были быть стерты либо сами исчезают, либо нет, но при этом их уже можно сразу стереть вручную без вышеприведенного окна.
Вот такие странности...
Наблюдал неоднократно такие вещи. Выяснил, что в какой-то момент папка Files со всеми подпапками и файлами получает атрибут read-only. Снятие руками этого флага не помогает. Но всегда помогает перезапуск терминала. Добиться воспроизведения не смог (не пытался), поэтому в СД не сообщал.
У ошибка (5022) возникает только если задать FILE_COMMON
Папку очищает, но не удаляет
Этот флаг ставить не нужно, иначе поиск файла будет происходить в общей папке, а ошибка говорит, что задано не верное имя директории.
Дорожка к файлу
"\\MQL4\\Files";не требует установки этого флага. Так что все правильно.
Наблюдал неоднократно такие вещи. Выяснил, что в какой-то момент папка Files со всеми подпапками и файлами получает атрибут read-only. Снятие руками этого флага не помогает. Но всегда помогает перезапуск терминала. Добиться воспроизведения не смог (не пытался), поэтому в СД не сообщал.
Этот флаг ставить не нужно, иначе поиск файла будет происходить в общей папке, а ошибка говорит, что задано не верное имя директории.
и с FILE_COMMON и без - работает (первоначально при проверке забыл этот флаг в последний if поставить). С FILE_COMMON подразумевалость что он во всех операциях присутствует
Этот флаг ставить не нужно, иначе поиск файла будет происходить в общей папке, а ошибка говорит, что задано не верное имя директории.
Дорожка к файлу
не требует установки этого флага. Так что все правильно.
Странно всё это. Я заметил что в пути к папкам MQL4 и перекомпилировал код в .ex4 и как ни странно, код отработал без ошибок. Удалил закрытие файла и получил
Потом без исправлений запустил на мт5 и, как ни странно, упоминание о папке MQL4 было проигнорировано. Папки и файл были созданы в папке MQL5. Дальше всё аналогично проверке в МТ4. Не закрытый файл не удаляется...
Странно всё это. Я заметил что в пути к папкам MQL4 и перекомпилировал код в .ex4 и как ни странно, код отработал без ошибок. Удалил закрытие файла и получил
Потом без исправлений запустил на мт5 и, как ни странно, упоминание о папке MQL4 было проигнорировано. Папки и файл были созданы в папке MQL5. Дальше всё аналогично проверке в МТ4. Не закрытый файл не удаляется...
Всмысле Вы сделали из скрипта советник и попробовали его запустить?
Но я его закрываю, а проблема остается... Увы...(