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

 

Добрый день.

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

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

 
pitpiter:

Добрый день.

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

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

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

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

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

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

 
Roger:

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


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

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

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



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

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

Причина обращения: