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

[Удален]  

Да, я ошибся. У Вас создаётся только один объект и не удаляется.

Так как, когда Вы Вызываете конструктор

  CLASS()
  {
    CLASS::Ptr = CLASS::Tmp;
  }

CLASS::Tmp ещё содержит мусор, а не адрес объекта.

 
1) Создается структура static PTR<CLASS> CLASS::Ptr;
2) Создается класс, new CLASS; отрабатывает конструктор CLASS()и CLASS::Ptr присваивается Null 
3) Обновляется значение CLASS::Tmp указателем на new CLASS
4) Удаляется структура PTR<CLASS> CLASS::Ptr, отрабатывает деструктор, пытается удалить CLASS::Ptr (а он Null)
 
Koldun Zloy:

CLASS::Tmp ещё содержит мусор, а не адрес объекта.

Спасибо! Как-то не узрел этой очевидности.

Sergey Dzyublik:
1) Создается структура static PTR<CLASS> CLASS::Ptr;
2) Создается класс, new CLASS; отрабатывает конструктор CLASS()и CLASS::Ptr присваивается Null 
3) Обновляется значение CLASS::Tmp указателем на new CLASS
4) Удаляется структура PTR<CLASS> CLASS::Ptr, отрабатывает деструктор, пытается удалить CLASS::Ptr (а он Null)

Спасибо. Только не Null, а мусор.

 

Было бы хорошо, если бы в режиме

ChartSetInteger( 0,CHART_SHOW,false );

не отображались стрелки от торговых операций (входы/выходы). Ни к чему они там совершенно.

 
Ребят, вопрос не в тему, я новичок, хотел бы заказать работу, на щас на балансе 0, я могу открыть тему? или надо пополнить счет в начале? немного не понял когда блокируют со счета деньги...
[Удален]  
The service is unavailable.
Ушёл за настойкой валерьяны...(
 
Ошибка компиляции
struct STRUCT
{
  long l;
  
  STRUCT( void )
  {
  }
};

union UNION
{
  STRUCT Value; // 'STRUCT' has constructor and cannot be used as union member
};
 

1. Когда будет описание union в документации?

2. Это замена простым структурам?

3. будут ли поддерживать union приведение типа как описано для структур в документации?

 

вот как с помощью union можно скопировать структуру в массив char:

struct DATA
  {
   int      var1;
   uint     var2;
   float    var3;
   double   var4;
  };

union NAME_BIT
  {
   char  buff[20];
   DATA  data;
   NAME_BIT() {
      ArrayInitialize(buff, 0);
   }
  };

int OnInit() {
   NAME_BIT _space, _un_space;
   _space.data.var1 = 100;
   _space.data.var2 = 78;
   _space.data.var3 = 1.999f;
   _space.data.var4 = .0357;
   
   ArrayCopy(_un_space.buff, _space.buff);
   
//---
   return INIT_SUCCEEDED;
}

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

 
Alexey Viktorov:

А почему массив обнуляется дважды?

)) забыл убрать, достаточно проинициализировать и все, уже исправил ))