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

 

Решил посмотреть одну из своих старых разработок и... Подскажите, что означает такая ошибка?

---

Инициализация эксперта проходит успешно. А при попытке открыть информационную панель получаем сюрприз. Где искать причину? ))

 
tol64:

Решил посмотреть одну из своих старых разработок и... Подскажите, что означает такая ошибка?

---

Инициализация эксперта проходит успешно. А при попытке открыть информационную панель получаем сюрприз. Где искать причину? ))

Надо локализовать проблему. Я в аналогичной ситуации понаставил Print-ов и смотрел, где именно вылетает. А потом или в сервисдеск или на форум. А может, у себя найдёте ошибку.
 
Valmars:
Надо локализовать проблему. Я в аналогичной ситуации понаставил Print-ов и смотрел, где именно вылетает. А потом или в сервисдеск или на форум. А может, у себя найдёте ошибку.

Придётся принтовать, где не допринтовал. )) А разработчики по этому коду картинке не могут определить откуда ноги растут? Нужна подсказка. Хотя там всегда новый код генерируется. Вот ещё пример:

 

 
tol64:

Придётся принтовать, где не допринтовал. )) А разработчики по этому коду картинке не могут определить откуда ноги растут? Нужна подсказка. Хотя там всегда новый код генерируется. Вот ещё пример:

Разработчики  любом случае попросят все локализовать, создать заявку в СД, прикрепить эксперта и описать все максимально подробно.

На то они и разработчики (ну Вы же их знаете), а телепаты сегодня отдыхают. :)

 
После копирования в динамический массив some_ array_1 объявленный как some_ array_1[], которому не выделялась память, динамического массива some_ array_2, объявленного как как some_ array_2[], которому выделялась память с помощью ArrayResize(some_ array_2, some_ array_2_quantity), с помощью оператора ArrayCopy(some_ array_1, some_ array_2) оказывается, что число элементов массива some_ array_1 не 0, а some_ array_2_quantity. Это серьезная ошибка, т.к. массиву some_ array_1[] не выделялась память. Просьба ее устранить, чтобы размер массива в данной ситуации не менялся сам собой и компилятор выдавал ошибку.
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
Interesting:
Разработчикам.

После перехода на новый билд (555) терминал перестал сохранять положение (верней статус активности) для "Инструментов", "Обзора рынков","Тестера" и "Окна данных".

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

"Навигатор", как и всегда расположен вместе с графиками в окне главной формы, с ним все нормально.

ОС - Win XP32, Билд - 555, монитора два. На одном главное окно (на котором навигатор и графики), а на втором все вышеперечисленное ("Инструменты", "Обзора рынков","Тестера" и "Окна данных").

PS

На счет x64 и других ОС сказать не могу, нет возможности проверить на двух мониторах.

Такая же хрень на семерке на одном мониторе. Переустановка помогла. А еще терминал путает папки в Roaming для разных терминалов после переустановки.
 
-Alexey-:
После копирования в динамический массив some_ array_1 объявленный как some_ array_1[], которому не выделялась память, динамического массива some_ array_2, объявленного как как some_ array_2[], которому выделялась память с помощью ArrayResize(some_ array_2, some_ array_2_quantity), с помощью оператора ArrayCopy(some_ array_1, some_ array_2) оказывается, что число элементов массива some_ array_1 не 0, а some_ array_2_quantity. Это серьезная ошибка, т.к. массиву some_ array_1[] не выделялась память. Просьба ее устранить, чтобы размер массива в данной ситуации не менялся сам собой и компилятор выдавал ошибку.

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

Это не баг, а фича.

 
Urain:

Нет никакой ошибки, функция ArrayCopy сама распределяет память динамического массива приёмника.

Это не баг, а фича.

Из-за этой фичи легко допустить алгоритмические ошибки - по случайности, или по ошибочности алгоритма. И потом - хрен найдешь и хрен узнаешь о том, что есть ошибки. Я нашел ошибку только тогда, когда на С++ программу переводить стал, т.к. там компилятор - помошник выявления ошибок. Т.ч. считаю, что это больше баг, чем фича. ИМХО!
 
-Alexey-:
Из-за этой фичи легко допустить алгоритмические ошибки - по случайности, или по ошибочности алгоритма. И потом - хрен найдешь и хрен узнаешь о том, что есть ошибки. Я нашел ошибку только тогда, когда на С++ программу переводить стал, т.к. там компилятор - помошник выявления ошибок. Т.ч. считаю, что это больше баг, чем фича. ИМХО!
ArrayCopy не единственная функция распределяющая память, все функции Copy сами заботятся о массивах приёмниках, так что будьте внимательнее и читайте мануал.
 

Это как же так получается что TimeCurrent() меньше последнего значения таймсерии??

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

   Print("time[rates_total-1] = ",time[rates_total-1]); 
   Print("TimeCurrent()         = ",TimeCurrent());  

   return(rates_total);
  }
TimeCurrent()         = 2011.12.09 18:47:29
time[rates_total-1]  = 2011.12.09 23:00:00
Причина обращения: