Скачать MetaTrader 5

Ф-ия FileOpen не всегда открывает файл. Почему?

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

Добрый день.

Подскажите пожалуйста что может быть причиной не срабатывания функции 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
19159
Piotr Storozenko  
Vadim Zhunko
5226
Vadim Zhunko  
Проверте, на всякий случай, закрываются ли файлы после использования. Есть ограничение на количество открытых файлов. В старом 32, в новом 64.
Alexander
2441
Alexander  

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

Slava
Модератор
6918
Slava  
pitpiter:

Добрый день.

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

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

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

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

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

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

Piotr Storozenko
19159
Piotr Storozenko  
Roger:

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


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

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

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



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

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

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