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

 
Sergey Dzyublik:

Очень много текста, все не читал.
Но если у вас что-то работает в дебаг версии и при этом не работает в релиз, или наоборот, то проверьте все ли переменные и поля, особенно в классе/структуре, были инициализированы.

Те данные, которые нуждались в инициализации я проинициализировал. А если, вдруг и окажутся где-то случайные данные, то это вызовет ошибку самой программы (например Array out of range или Invalid pointer). По крайней мере, на работу отладчика это не повлияет. И подобные баги он как раз и помогает найти.

 
Mihail Matkovskij:

Может у вас проявляется данныей дефект:

(не исправлено ME5(build 2390)) **  (new)   Debuger, не работает StepInto (F11) и установленные breakpoints.

 
TheXpert:
возможно у вас такая сложная структура файлов, что отладчик не может ассоциировать точку останова, тогда это проблема отладчика.

Думаю, что структура файлов стандартных элементов UI, которые я использую в своем проекте еще сложнее, чем моих наработок. Для того чтобы сделать что-то подобное мне пришлось бы очень много работать. А так, бери и пользуйся, как говорится. Если всё сложить вместе, как в моём случае. То, действительно, получается нечто сложное. Но для работающих программ это вполне нормально.

 
fxsaber:

Изначально к этому подводил.


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

Попишите немного на Си языке, появится хорошая привычка аллоцировать переменные.

В первой пользовательской функции входящая MqlTick структура, сразу передаётся в функцию MQL, без выделения памяти.
Такая запись называется плохим кодингом. 

bool GetCurrentTick1( MqlTick &Tick )
{
  return(SymbolInfoTick(_Symbol, Tick));
}

Во втором примере, создаётся переменная CurrentTick; под которую выделяется память.
И такая запись считается более правильной. 
Так как память уже выделена, то входные данные обрабатываются быстрее, без лишних затрат.

bool GetCurrentTick2( MqlTick &Tick, const bool NewTick = false )
{
  static MqlTick CurrentTick;
  
  if (NewTick)
    SymbolInfoTick(_Symbol, CurrentTick);
  
  Tick = CurrentTick;
  
  return(true);
}
 
Roman:

Попишите немного на Си языке, появится хорошая привычка аллоцировать переменные.

последуйте своему совету, возможно у вас появится хотя бы малейшее представление об аллоцировании.
 
Roman:

...

И такая запись считается более правильной. 

Кем считается?  Вы бы хоть замеры скорости чтоль привели для начала.

 
Alexey Navoykov:

Кем считается?  Вы бы хоть замеры скорости чтоль привели для начала.

Слишком много внимания для троля.

 
TheXpert:
последуйте своему совету, возможно у вас появится хотя бы малейшее представление об аллоцировании.

Под аллоцированием имелось ввиду выделение памяти.
А не в том прямом смысле как класса. 
Пользовательская функция имеет свою область видимости.

 
Alexey Navoykov:

Кем считается?  Вы бы хоть замеры скорости чтоль привели для начала.

На предыдущей странице fxsaber привёл замеры.
Я пояснил почему так происходит.
Выделяйте всегда память, статически или динамически.

 
Sergey Dzyublik:

Может у вас проявляется данныей дефект:

(не исправлено ME5(build 2390)) **  (new)   Debuger, не работает StepInto (F11) и установленные breakpoints.

Возможно... Я пробовал заходить в метод int CCheckGroup::itemCheckState(const string item), который я описывал выше. И по началу, действительно отладчик заходит туда. Но стоит выйти из него и всё, больше отладчик его не видит и не работают никакие точки останова ни "Шаг с заходом". Что ж, придётся временно обходиться функциями Print() и Alert().

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