Named Pipe Работа с пайпами - страница 2

 

Флаг FILE_SHARE_READ не заменяет флага FILE_READ. Надо писать

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_SHARE_READ,";")
 
stringo:

Флаг FILE_SHARE_READ не заменяет флага FILE_READ. Надо писать


да это я понял спасибо. только что прочитал об этом.
 

если кому поможет,

исправленные рабочие функции

int  ticker;
double loter;
int reverseer;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string startWriteInfo()
  {
//--------------------------------------------------------------- 2 --
   int Handle;// Файловый описатель
   string      Obj_Name;                    // Имя объекта
//--------------------------------------------------------------- 3 --
   Handle=FileOpen(File_Name,FILE_CSV|FILE_SHARE_WRITE|FILE_WRITE,";");// Открытие файла
   if(Handle<0) // Неудача при открытии файла
     {
      if(GetLastError()==4103) // Если файла не существует,..
         Print("startWriteInfo Нет файла с именем ",File_Name);//.. извещаем трейдера 
      else                             // При любой другой ошибке..
      Print("startWriteInfo Ошибка при открытии файла ",File_Name,GetLastError());//..такое сообщ
      return("-1");
     }
//--------------------------------------------------------------- 4 --
   FileWrite(Handle,"ticket;lot;reverse;");
//--------------------------------------------------------------- 8 --
   FileClose(Handle);                // Закрываем файл
   return(Obj_Name);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int startReadTotal(int ticket=0)
  {
//--------------------------------------------------------------- 2 --
   int Handle;// Файловый описатель
//--------------------------------------------------------------- 3 --
   Handle=FileOpen(File_Name,FILE_CSV|FILE_SHARE_READ|FILE_READ,";");// Открытие файла
   if(Handle<0) // Неудача при открытии файла
     {

      // Если файла не существует,..
      Print(GetLastError());
      Print("startReadTotal Нет файла с именем ",File_Name);//.. извещаем трейдера 
      startWriteInfo();
      Print("startReadTotal Создаем файл данных ",File_Name);//.. извещаем трейдера 

      return(-1);
     }
   string com;
   while(!FileIsEnding(Handle))
     {
      int  tick=StrToInteger(FileReadString(Handle));
      double lot=StrToDouble(FileReadString(Handle));
      int reverse=StrToInteger(FileReadString(Handle));

      com=com+"\n tick="+tick+" lot="+lot+" reverse="+reverse;
      if(tick==ticket)
        {
         ticker=tick;
         loter=lot;
         reverseer=reverse;
         break;
        }
     }
   Comment(com+"\n================"+"\n ticker="+ticker+" loter="+loter+" reverseer="+reverseer);
   FileClose(Handle);                // Закрываем файл
   return(tick);                    // Выход из start()
  }
 
нет все равно при открытии через ексель - терминал не видит файла.
 
Vladon:
нет все равно при открытии через ексель - терминал не видит файла.
Потому что Эксель открывает его в монопольном режиме?
 
Renat:
Потому что Эксель открывает его в монопольном режиме?

не знаю честно. просто открываю обычным способом.
 

OpenOffice тоже самое, блокирует файл данных.

обычный редактор текстовый - все нормально.

 
Vladon:

OpenOffice тоже самое, блокирует файл данных.

обычный редактор текстовый - все нормально.

Я так понимаю, что на чтение файл все-таки открывается, а вот на запись нет (как и должно быть при безусловной блокировке Экселем своих файлов)?

Или даже на чтение в режиме FILE_CSV|FILE_SHARE_READ|FILE_READ не открывается?

 
Renat:

Я так понимаю, что на чтение файл все-таки открывается, а вот на запись нет (как и должно быть при безусловной блокировке Экселем своих файлов)?

Или даже на чтение в режиме FILE_CSV|FILE_SHARE_READ|FILE_READ не открывается?



даже на чтении не открывается.

т.е. вот я запустил эксперта. все нормально - работает читает файл, - создание файла я сделал для удобства, если его нет он его создает,

получается так что все нормально до тех пор когда я файл не открою Екселем. Как только файл открывается екселем, то советник считает что файла нет и пытается его создать снова и ничего не может сделать так как файла якобы нет, или ошибка 5004.

файлы я выложил в работе https://www.mql5.com/ru/job/request/68099/page1

 
Видимо причина в том, что Excell открывает файл в монопольном режиме.
Причина обращения: