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

 
Почему когда я выключая комп и  захожу в МТ4 на на следующий день уровни не сохраняются? 
 

Разработчики, привет.

В CArrayList из джинерика capacity неверно используется. Если это резервный размер, то надо вызывать в конструкторе так:

ArrayResize(m_items,0,m_default_capacity);

Сейчас там так:

ArrayResize(m_items,m_default_capacity);

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


PS. В ходе изучения кода нашел, что передаете m_size все-таки. При пустом массиве BinarySearch возвращает 0, а не -1.

И зачем самим организовывать capacity, если есть это на уровне ArrayResize?

PPS. Планируется ли создание LowerBound?
 

Вообщем по CArrayList  3 основных момента:

1. Подумать, чтобы убрать дополнительную реализацию capacity, раз она уже есть в ArrayResize

2. Исправить BinarySearch для пустого массива. У вас в массиве по умолчанию 4 элемента и передается 0й индекс первым, он же и возвращается при нулевом размере.

3. Желательно добавить LowerBound. Странно, что никто не просил до этого

 
Yevhenii8370:
Почему когда я выключая комп и  захожу в МТ4 на на следующий день уровни не сохраняются? 

Тут два варианта - либо есть индикатор/советник, который чистит все уровни при инициализации, либо не успевает сохранится сет. Сталкивался с обеими проблемами, первая лечится правкой кода, а вторая сохранением сета два раза и загрузкой сохраненной версии при запуске терминала.

 
Sergey Dzyublik:

MT5 (build 2118), Сколько еще можно ждать исправлений багов в работе функциональности typedef?
Какой-то бред - шаг влево от примитивного примера по использованию   typedef и все - куча багов, блокирующих дальнейшую разработку.

Спасибо за код.

Ошибка исправлена.

Сегодня вышел демо билд MT4 1192, попробуйте использовать MetaEditor 2121 идущий с MT4 для компиляции MQ5 файлов

 

снёс индикатор, осталось вот на графике (прикреплено).

как убрать? спсб

искал в списке объектов - не нашел. снес индикаторы все и советник - не помогло.

Файлы:
 
barashka:

снёс индикатор, осталось вот на графике (прикреплено).

как убрать? спсб

искал в списке объектов - не нашел. снес индикаторы все и советник - не помогло.

В списке объектов есть кнопка показать скрытые объекты.  Там их и удалите...

 
Vladimir Pastushak:

В списке объектов есть кнопка показать скрытые объекты.  Там их и удалите...

: )
 
Sergey Dzyublik:

https://www.mql5.com/ru/docs/basis/types/classes

Вначале удивился, так как не знал о существовании  offsetof. 
Но реальность расставила все на свои места:

struct Parent{ 
      char              c;    // sizeof(char)=1 
};
     
struct Children pack(2) : Parent{ 
      short             s;   // sizeof(short)=2 
};

void OnStart(){ 
//--- объявим переменную типа Children 
   Children child;   
//--- узнаем смещения от начала структуры  
   Print("offsetof(child.c)=",offsetof(child.c)); 
   Print("offsetof(child.s)=",offsetof(child.s));
}   



'offsetof' - function not defined

Спасибо за сообщение.

В справке ошибки копипаста, исправим:

вместо имени переменной child должен тип тип класса Children и вместо '.' (доступа к полю) должная быть запятая ( offsetof - это (условно) встроенный макрос  )

struct Parent{ 
      char              c;    // sizeof(char)=1 
};
     
struct Children pack(2) : Parent{ 
      short             s;   // sizeof(short)=2 
};

void OnStart(){ 
//--- узнаем смещения от начала структуры  
   Print("offsetof(Children,c)=",offsetof(Children,c); 
   Print("offsetof(Children,s)=",offsetof(Children,s));
}   

 

Проблема с .NET.  Программа вылетает при обращении библиотеки к другим кастомным модулям, сообщая, что файл не найден:

System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.TypeInitializationException: Инициализатор типа "MDD.IQFeedAPI" выдал исключение. ---> System.IO.FileNotFoundException: Не удалось загрузить файл или сборку "NLog, Version=2.1.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c" либо одну из их зависимостей. Не удается найти указанный файл.

Все используемые dll (включая упомянутый NLog.dll) лежат в той же папке.  Но почему-то система их не видит при запуске из МТ.  Нормально работает только со штатным фрэймворком.   Это у всех так, или я что-то не учёл?  Если кто знает, как устранить проблему, буду признателен.