Ошибки, баги, вопросы - страница 2233

 
A100:

А нельзя убрать - потому что это код советника или Вы желаете разбираться в тысячах строк чужого кода не имеющих отношения к делу - результатом которых является лишь задержка по времени?

Задание которое я Вам дал выше выполните и доложите общественности о результатах

Зачем мне повторять ошибочный код???? Зачем мне цеплять какой-то неизвестный .ех файл????

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

 
Alexey Viktorov:

Зачем мне повторять ошибочный код???? Зачем мне цеплять какой-то неизвестный .ех файл????

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

А с чего Вы решили что код ошибочный? 

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

 
A100:

А с чего Вы решили что код ошибочный? 

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

На злобные больше похожи ваши посты. Моя просьба

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Alexey Viktorov, 2018.07.23 14:16

Странно что не помогает. Я смог получить 5004 только без флага FILE_SHARE_WRITE

Файл в советнике записи открывается в OnInit и закрывается только в OnDeinit. При этом, в советнике чтения, файл читается и печатает без проблем.

Для более точного повторения ваших действий хорошо-бы уточнить как вы пишете файл.


была адресована не вам, но вы встряли и суёте посты двухлетней давности, на которые разработчики не обратили внимания, на мой взгляд, по причине искусственно созданной ошибки.

И ещё раз повторяю: Зачем мне воспроизводить искусственно созданную ошибку???????????

 
Alexey Viktorov:

И ещё раз повторяю: Зачем мне воспроизводить искусственно созданную ошибку???????????

Объясните что такое искуственно созданная ошибка? Я не понимаю этой фразы
 
TheXpert:

попробуйте после открытия файла на запись (часть 1 кода) просмотреть его виндовым просмотрщиком. будет хотя бы понятно с каким хендлом проблема.

если откроет - со вторым, если нет - с первым.

Винда то первый файл открывает. Вижу на уровне системы, что установлены флаги read, write, share_read. Однако в терминале открытие того же файла на чтение выдает 5004. Первым советником в файл производится запись, т.е. он не просто для проформы открыт с какими-то флагами.

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

PS. Может кто уже писал в СД? Какие есть ответы?

 
A100:
Строго говоря ошибка связана с одновременным вызовом FileOpen( filename ) из разных советников (флаги роли не играют)
флаг FILE_SHARE_READ собственно и обозначает неэксклюзивный доступ на чтение, по крайней мере в winapi оригинале
 
Stanislav Korotky:

Винда то первый файл открывает.

значит второй хендл несмотря на флаг хочет эксклюзивный доступ на чтение или другой неразрешенный доступ.
 
A100:
Объясните что такое искуственно созданная ошибка? Я не понимаю этой фразы

Ни какого срытого подтекста в моих словах нет. Вы наверное понимаете что такое искусственная кожа. Ориентируйтесь на это понимание.

Покажите код без дополнительных манипуляций с применением шаблонов и прочих танцев с бубнами, который возвращает ошибку ERR_CANNOT_OPEN_FILE при флагах FILE_SHARE_READ|FILE_SHARE_WRITE

Если без танцев с бубнами ошибка не воспроизводится, значит ошибка вызвана во время танцев...

Повторяю последовательность действий:

Советник 1:

В OnInit бинарный файл открыт для записи.

Каждую минуту пишет в файл открытие текущего бара.

Файл закрывается ТОЛЬКО в OnDeinit.

Советник 2:

Каждую минуту открывает этот бинарный файл.

Читает последнюю запись, печатает её.

Закрывает файл.

И так повторяет каждую минуту.


При этом не возникает никаких ошибок открытия файла.

 

Вот на это простом скрипте, запущенном сперва с writing = true, а потом на другом чарте с writing = false, получаю ошибку.

#property script_show_inputs

input bool writing = false;

int OnStart()
{
  int handle = FileOpen("xyz.foo", FILE_READ|FILE_BIN|FILE_SHARE_READ|(writing?FILE_WRITE:0));
  if(handle == INVALID_HANDLE)
  {
    Print("FileOpen failed: ", GetLastError());
    return INIT_FAILED;
  }
  
  if(writing) FileWriteInteger(handle, 0);
  
  Print("handle=", handle);
  
  while(!IsStopped())
  {
    Sleep(1000);
  }

  Print("Closing");
  FileClose(handle);

  return 0;
}
 
Andrey Khatimlianskii:

Насколько я помню, там настраивается тайм-аут, после которого цена считается безнадежно устаревшей. То есть если не менялась 3 минуты, то открываться по ней нельзя.

Написал тестовый скрипт этого дела. Словил NoPrice через 64 секунды, как пришел последний тик. Возможно, минутный таймаут, действительно, стоит. Помониторю...

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