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

 
fxsaber:

Почему warning на ровном месте?

Нет перегрузки этой функции с uchar. Есть только char. Потому и алертит, что константа больше, чем 127.
 
Sergei Vladimirov:
Нет перегрузки этой функции с uchar. Есть только char. Потому и алертит, что константа больше, чем 127.
Тогда почему вообще не возникает ошибки? Ведь для uchar-массивов нет перегрузки (если справка не врет).
 
Alexey Viktorov:

Если показывает значения похожие на правду, а считает не по тем данным, выходит что тараканы в mql5, а не в тестере или визуализаторе.

В общем, спасибо за участие, буду побеждать проблему в долгосрочном режиме. И сегодня проверю на другом, похожем участке валюты. Может это проблема в тиках на этом месте, хз?

Проверил. Всё считает нормально. Видимо тараканы в генерации тиков в конкретном месте истории.
 
fxsaber:
Тогда почему вообще не возникает ошибки? Ведь для uchar-массивов нет перегрузки (если справка не врет).
А вот это - правильный вопрос.
 
fxsaber:
Тогда почему вообще не возникает ошибки? Ведь для uchar-массивов нет перегрузки (если справка не врет).
Видимо потому что массивы идентичны. Разница между char и uchar лишь в интерпретации компилятором.  По сути там и предупреждения быть не должно, ибо ничего не усекается на самом деле, можно убедиться.
 
Alexey Navoykov:
Видимо потому что массивы идентичны. Разница между char и uchar лишь в интерпретации компилятором.  По сути там и предупреждения быть не должно, ибо ничего не усекается на самом деле, можно убедиться.
Там побайтово копируется. Так со всеми signed <-> unsigned.
 
A100:

Но эта (и предыдущие с typedef) - попутно выявленные ошибки - основную я пока не нашел, поскольку в исходной программе нет typedef с одинаковой сигнатурой (как в этом примере).

Удалось составить проверочный скрипт близкий к исходной программе с ошибкой при выполнении

//Script1.mq5
typedef int (*GTW)( uint, uint, int );
#import "Script2.ex5"
        void f( GTW );
#import "Script3.ex5"
        int g( uint, uint, int );
#import
void OnStart() { f( g ); }
//Script2.mq5
#property library
typedef int (*GTW)( uint, uint, int );
void f( GTW ff ) export { ff( 0x1, 0x1, 0 ); }
//Script3.mq5
#property library
int g( uint, uint, int ) export
{
        Print( __FUNCSIG__ );
        return 0;
}

Результат: invalid function pointer call in 'Script2.mq5'

А теперь фокус... - замените GTW во всех файлах допустим на GT и проверьте полученный результат !?!

 

Подскажите по синтаксису, как правильно переделать такую функцию

MqlTick Func()
{
  MqlTick Tick = {0};
  
  return(Tick);
}

 на нечто такое

MqlTick Func()
{
  return(MqlTick(0));
}

или такое

MqlTick Func()
{
  return(new MqlTick);
}

Т.е. не прописывать отдельной частью создание структуры, которую надо вернуть.

 

С недавних пор (с месяц примерно) в обсуждении проектов сервиса 'Работа', после набора хреновой тучи текста с цитатами и иллюстрациями, после отправки всё это улетает в ... дыру #403

 


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

Дорогая редакция, поясните, пожалуйста, что за новую революцию на благо пользователей навертели теперь и как от неё уворачиваться?
 
Alexander Puzanov:

С недавних пор (с месяц примерно) в обсуждении проектов сервиса 'Работа', после набора хреновой тучи текста с цитатами и иллюстрациями, после отправки всё это улетает в ... дыру #403

 


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

Дорогая редакция, поясните, пожалуйста, что за новую революцию на благо пользователей навертели теперь и как от неё уворачиваться?
В левом-верхнем углу редактора ВСЕГДА перед Отправкой большого сообщения нажимайте кнопку HTML, затем CTRL+A и CTRL+C. Таким образом останется все в буфере. И если возникнет ошибка. То заходим опять через кнопку HTML, затем CTRL+A и CTRL+V. Сбережете кучу нервов.
Причина обращения: