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

 
fxsaber:

Вроде, это неправильное поведение языка, т.к. ограничивает возможности

Мне нужно задать const-поле в виде структуры. Думал, оператор копирования прокатит, а компилятор вместо этого хочет конструктор, потому что по синтаксису похоже. Но это неправильно.

Это правильно потому что однозначно (в списке инициализации всегда конструктор, а не оператор), неправильно другое:

struct S {
        S()                        { Print( __FUNCSIG__ ); }
        void operator=( const S& ) { Print( __FUNCSIG__ ); }
};
void OnStart()
{
        S s;
        S s1 = s;

}

Результат:

void S::S()                             (1)
void S::S()                             (2)
void S::operator=(const S&)   (3)

в то время как С++ не выводит строки (2) и (3), а значит не заменяет отсутствующий конструктор копирования на симбиоз конструктора по умолчанию и оператора присваивания

 

Если у BMP-объекта удалили его ресурс, а затем снова создали, то BMP-объект свой ресурс больше не видит. Это ошибка. Сейчас приходится удалять объект и заново его же создавать.

 
fxsaber:

Если у BMP-объекта удалили его ресурс, а затем снова создали, то BMP-объект свой ресурс больше не видит. Это ошибка. Сейчас приходится удалять объект и заново его же создавать.

Код покажете? Зачем удалять ресурс, можно его перезалить / изменить без удаления.
 

Ситуация:

Рыночная позиция стороннего эксперта была УСПЕШНО выбрана OrderSelect(ticketNumber,SELECT_BY_TICKET) и предпринимается попытка в цикле его закрыть (выбор ордера по тикету был сделан перед циклом попыток закрытия).


Получаю ошибку:

2017.11.10 06:00:33.806 ExpertName EURCAD,H1: unknown ticket 1846978258 for OrderClose function

Тикет в норме


Естественно, что родной эксперт мог закрыть этот ордер самостоятельно, поэтому

на каждой итерации цикла делается проверка

if(OrderCloseTime()!=0) break;


которая не дает желаемого результата и сообщение о неправильном номере тикета выдается все 30 раз цикла.

Кривые руки или это баг с потерей выбранного ордера ?

Или номер ошибки может не совсем точно отражать ситуацию/проблему?


Update:

Выяснил, что позиция закрывается-таки не родным экспертом, а тем которым мы закрываем.

Однако, до возникновения циклической ошибки 4108 выдается однократно ошибка 3 (хотя до записи об ошибке 3 в журнале записано, что ордер был закрыт).

 
Kirill Belousov:

Естественно, что родной эксперт мог закрыть этот ордер самостоятельно, поэтому

на каждой итерации цикла делается проверка

Надо и OrderSelect делать.

 
Andrey Barinov:
Код покажете? Зачем удалять ресурс, можно его перезалить / изменить без удаления.

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

#define WIDTH 100
#define ARGB(a,r,g,b)  ((uchar(a)<<24)|(uchar(r)<<16)|(uchar(g)<<8)|uchar(b))

bool Set( const string Name, const uint &Data[], const uint Width )
{
  return(ResourceCreate(Name, Data, Width, (Width == 0) ? ArraySize(Data) : ArraySize(Data) / Width, 0, 0, Width, COLOR_FORMAT_ARGB_NORMALIZE));
}

void Test( const string Name )  
{
  static uint Data[WIDTH * WIDTH];
  
  for (uchar i = 0; i < 100; i++)
  {
    ArrayInitialize(Data, ARGB(0xFF, i, i, 0));
    ArrayInitialize(Data, ARGB(0xFF, i, i, 0));
    
    Set(Name, Data, WIDTH);
    
    ChartRedraw();
    
    Sleep(50);
  }
  
  ResourceFree(Name);  
}

void OnStart()
{  
  const string ObjName = __FILE__;
  const string Name = "::" + ObjName;
  
  ObjectCreate(0, ObjName, OBJ_BITMAP_LABEL, 0, 0, 0);
  ObjectSetString(0, ObjName, OBJPROP_BMPFILE, Name);
  
  // Видна работа
  Test(Name);
  
  // Нет результата на экране
  Test(Name);
  
  ObjectDelete(0, ObjName);
}
 

Вообще перестали приходить сообщения от 

Системные сообщения


Вообще никакие не приходят. в том числе , сообщение в продукте, продажа продукта, замечания модератора, сообщение о валидации продукта. 

 
Vladislav Andruschenko:

Вообще перестали приходить сообщения от 

Системные сообщения


Вообще никакие не приходят. в том числе , сообщение в продукте, продажа продукта, замечания модератора, сообщение о валидации продукта. 

Добрый день.

Ошибку исправили, надо подождать обновление сайта.

Приносим извинения за неудобства.

 
Julia Test:

Добрый день.

Ошибку исправили, надо подождать обновление сайта.

Приносим извинения за неудобства.


Спасибо. уже ответили в СД.  :-) ждемс... 

З.Ы. Так тихо еще никогда не было.... прям тишина ......... 

 
fxsaber:

Надо и OrderSelect делать.

Можно детали почему так?

Мы успешно выбрали ордер по тикету.

Мы отправили команду на закрытие в итерации №1.

На этой итерации №1 Получили ошибку 3 (Неверные торговые параметры.). Ордер тем не менее закрылся. Как он закрылся?

Далее начиная с итерации №2 получаем ошибку 4108. И не получается выйти по условию OrderCloseTime!=0


На каком из этапов мы согласно документации теряем связь с выбранным по тикету ордером?

Не является ли это случаем, когда после отправки команды на закрытие ордер должен был быть заблокирован и должны была бы выдаваться ошибка 139 вместо 4108?