Запись файлов

 

Всем привет! 

По умолчанию файлы пишутся в .../Terminal/Common/

Вопрос в следующем: у меня с некоторой периодичностью пишутся данные в файл. На win10 все ок, а на серверных win это происходит по непонятному принципу - 1 раз из 20-30 периодов (вместо 20-30 раз соответственно). И никак не могу понять, почему так.

      if((Minuts()==01 || Minuts()==15 || Minuts()==30 || Minuts()==45) && vygr==0){vygruzka=1; vygr=1;}
      if((Minuts()==02 || Minuts()==16 || Minuts()==31 || Minuts()==46) && vygr==1){vygr=0;}
      if(vygruzka>0)
        {
         FileDelete(InpDirectoryName+"\\"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON);
         filehandle=FileOpen(InpDirectoryName+"\\"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON);
     
         FileSeek(filehandle,0,SEEK_END);
         FileWriteArray(filehandle,param,0,WHOLE_ARRAY);
    
         FileClose(filehandle);
         vygruzka=0;
        }
 

Во-первых, после каждой операции необходимы проверки на коды ошибок.

Во-вторых, думаю, проблема раньше - что-то с функцией получения минут.

В данном случае вы устанавливаете переменную vygruzka единицей на первой, пятнадцатой, тридцатой и сорок пятой минуте, сразу проверяете эту переменную, и если она больше нуля - пишете файл, с обнулением этой переменной. То есть, если с файловыми операциями все в порядке (обязательно надо добавить проверку на возвращаемые значения файловых операций и GetLastError()) - то проблема может быть только с определением минут.

 

Проверьте журнал в первую очередь.

Возьмите за правило, при публикации давать данные диагностики, например журнал или распринтовку обработанных ошибок.

Причин вашей проблемы может быть много, в добавление того, что сказал George Merts можно еще сказать, то, что если вы это делаете на VPS, то гляньте еще на монитор производительности, у вас запросто может не быть доступных процессорных или дисковых ресурсов для выполнения операции.

Кстати, нет нужды удалять файл, можно просто перезаписывать, это дешевле для системы. И зачем вы в свеже созданном файле двигаете курсор?

А что вообще хотели сделать?
 

Спасибо, за комментарии! Смотрел я функцию получения минут... все работает на win 10. Есть подозрение, что что-то с правами доступа, но эта же операция выполняется в DeInit без проблем. 

Про перезапись - хорошая мысль:) так и сделаю. Цель файла - периодическая выгрузка значений переменных - административная функция.

P.S. Журнал никаких ошибок по операции не фиксирует.

 
Artem Mordvinkin:
 

P.S. Журнал никаких ошибок по операции не фиксирует.

И файловые операции возвращают верные значения, и GetLastError() - всегда ERR_NO_ERROR ?
Причина обращения: