Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Все статьи доступны из MetaTrader 5. Поделись и ты своей!
Piotr Storozenko
18449
Piotr Storozenko 2014.02.02 20:50 

Добрый день.

Подскажите пожалуйста что может быть причиной не срабатывания функции FileOpen? Ниже приведен кусок кода программы а во вложении картинка с тестера. Судя по картинке фумкция вызывалась по крайней мере в течение 55 минут тестерского времени без проблем открывая файлы ..... закрывая файлы. Что может быть причиной того что в определенный момент программа не может открыть файл для записи ? Как можна перестраховаться перед подобными сбоями?

int start()
  { 
 
     CheckFillOrder();
     return(0);
  }


void CheckFillOrder()
{
   string temp=Symbol()+Frame(Period())+"TempInf.csv";
   int hend=FileOpen(path,FILE_CSV|FILE_READ,',');
   int hend1=FileOpen(temp,FILE_CSV|FILE_WRITE,',');
   if(hend1>0)
   {
    if(hend>0)
    {     
     FileClose(hend);
    }
    else
    {
        Alert("Error open  file read CheckFillOrder ",GetLastError());
        Alert("Expert stop");
        STOP=true;
    }     
    FileClose(hend1);
   } 
    else
    {
        Alert("Error open  file write CheckFillOrder ",GetLastError());
        Alert("Expert stop");
        STOP=true;
    }         
   CopFile(temp,path);
   FileDelete(temp);

   return;   
}
Piotr Storozenko
18449
Piotr Storozenko 2014.02.02 20:51  
Vadim Zhunko
5219
Vadim Zhunko 2014.02.02 21:19  
Проверте, на всякий случай, закрываются ли файлы после использования. Есть ограничение на количество открытых файлов. В старом 32, в новом 64.
Alexander
2441
Alexander 2014.02.02 21:57  

Ты, вроде удаляешь этот файл в этой функции. Может просто не успел создасться?

Slawa
Модератор
6675
Slawa 2014.02.03 07:57  
pitpiter:

Добрый день.

Подскажите пожалуйста что может быть причиной не срабатывания функции FileOpen? Ниже приведен кусок кода программы а во вложении картинка с тестера. Судя по картинке фумкция вызывалась по крайней мере в течение 55 минут тестерского времени без проблем открывая файлы ..... закрывая файлы. Что может быть причиной того что в определенный момент программа не может открыть файл для записи ? Как можна перестраховаться перед подобными сбоями?

Кто-то может быть открыл этот файл со стороны. Например, чтобы посмотреть.

Если хотите, чтобы было как раньше, открывайте файлы с явным указанием флагов FILE_SHARE_READ и FILE_SHARE_WRITE

Piotr Storozenko
18449
Piotr Storozenko 2014.02.03 15:12  
Zhunko:
Проверте, на всякий случай, закрываются ли файлы после использования. Есть ограничение на количество открытых файлов. В старом 32, в новом 64.

Спасибо, проверил и думаю что все функции работающие с файлами зкарывают файлы, Не знаю есть ли более простой метод проверки, я вписал функцию записи в файл после закрытия файла и везьде выдало ошибку :

2014.02.03 16:03:30 TestPrint: handle 1 does not exist in FileWrite
т.е. как понимаю файл был закрыт.

Piotr Storozenko
18449
Piotr Storozenko 2014.02.03 15:14  
Roger:

Ты, вроде удаляешь этот файл в этой функции. Может просто не успел создасться?


Файл удаляется после того как функция с ним отработает и скопирует его содержимое, а алерт пропечатлся перед. Так что врядли.
Piotr Storozenko
18449
Piotr Storozenko 2014.02.03 15:21  
stringo:

Кто-то может быть открыл этот файл со стороны. Например, чтобы посмотреть.

Если хотите, чтобы было как раньше, открывайте файлы с явным указанием флагов FILE_SHARE_READ и FILE_SHARE_WRITE



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

Если правильно понимаю эти флаги можна использовать в новой версии эдитора?

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