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

 
Ошибка при компиляции:
void g( int& ) {}
int f( int i )
{
    while ( 1 )
    {
        if ( i == 1 )
            return 0;
        else
            g( i );
        continue; //(*)
    }
} //Error: '}' - not all control paths return a value
А без (*) нормально. А какая разница?
 
Aleksey Vyazmikin #:

Решил поэкспериментировать с OpenCL, сделал скрипт - код ниже, но вот беда - если запускаешь первый раз - считает и завершает работу корректно, но если запустить второй раз, то терминал зависает, перезагружается драйвер видеокарты, а иногда и компьютер уходит в перезагрузку. Компьютер FX-8350 32ГБ ОЗУ, видеокарта HD7950.

Скрипт запускается с настройками по умолчанию.

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

Прошу помощи!

Ну и сам кернел

Добавил в конце скрипта принудительное удаление всего и вся - не помогло. Если не трудно, попробуйте у себя запусить скрипт - может это только у меня такой глюк.

//--- удаляем в обратной последовательности все созданные OpenCL контексты
  CLBufferFree(0);//Удаляет буфер OpenCL.
  CLBufferFree(1);//Удаляет буфер OpenCL.
  CLBufferFree(2);//Удаляет буфер OpenCL.
  CLBufferFree(3);//Удаляет буфер OpenCL.
  CLBufferFree(4);//Удаляет буфер OpenCL.
  CLBufferFree(5);//Удаляет буфер OpenCL.
  
  CLKernelFree(index_kernel);//Удаляет функцию запуска OpenCL.
  int program=m_OpenCL.GetProgram();//Возвращает хендл программы OpenCL.
  CLProgramFree(0);//Удаляет OpenCL программу.

  int context=m_OpenCL.GetContext();//Возвращает хендл контекста OpenCL
  CLContextFree(context);//Удаляет контекст OpenCL.


   //m_OpenCL.KernelFree(index_kernel);
   m_OpenCL.Shutdown();
   //delete m_OpenCL;
 
Ошибка при компиляции:
void g( const int&  i   ) { Print( i    ); }
void g( const int&  i[] ) { Print( i[0] ); }
template<typename T>
void f( T& t ) { g( t ); } //(*)
void OnStart()
{
    int i1 =      1;
    f(  i1 );
    int i2[1] = { 2 };
    f(  i2 ); //Error: 'i2' - parameter conversion not allowed
}

Зачем плодить ИДЕНТИЧНЫЕ (*) шаблоны отдельно для массива? Количество шаблонов увеличивается в геометрической прогрессии на каждый такой аргумент. Почему в MQL - t не может быть массивом? Тем более, что в С++ все нормально компилируется

 

Уважаемые разработчики!

Очень жду от Вас ответа по данному вопросу!

 
Aleksey Vyazmikin #:

Уважаемые разработчики!

Очень жду от Вас ответа по данному вопросу!

Разобрался сам - разные типы массивов были.

 

Что это значит?

2022.10.25 23:40:46.143 MQL5    VirtualAlloc failed in large allocator, size=40000000016
 
Aleksey Vyazmikin #:

Что это значит?

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

Это ошибка пула памяти, - не хвалило памяти в системе, при попытке выделить блок на ~40ГБ

Это создавался массив ?
Если нет, предоставте пожалуйста исходный код MQL программы (через ЛС), для которой данная ошибка воспроизводится.

 
Ilyas #:

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

Это ошибка пула памяти, - не хвалило памяти в системе, при попытке выделить блок на ~40ГБ

Это создавался массив ?
Если нет, предоставте пожалуйста исходный код MQL программы (через ЛС), для которой данная ошибка воспроизводится.

Спасибо, да, это был массив судя по всему - слишком оптимистичен я оказался, а памяти не хватило.

 

В меню Окна графиков (Alt+W) при выборе допустим верхнего графика и его закрытии (кнопка Закрыть) - чередование строк (темная\светлая) нарушается, а главное кнопки Выбрать и Закрыть становятся сразу неактивными:

Ожидалось, что выбор (синяя строка) с закрытой строки перейдет на следующую строку либо на строку активного в данный момент графика (а не в никуда как сейчас)

Примером правильной работы может служить меню Список объектов (Ctrl+B). Там при удалении объекта выбор не пропадает, а переходит на следующий объект и соответственно активность кнопок не пропадает:

При этом (после удаления) грамотно сделана светло-синяя подсветка, что как бы намекает, что это в отличии от синей подсветки - неявный выбор

 

Сделали очередные инновации, никого не предупредив...

Такой код:

string str_nZZ=IntegerToString(8,'0',2);
Print("str_nZZ=",str_nZZ);

На выходе:

2022.11.11 01:50:46.830 CSV_to3x_v02_ZZ (EURUSD,H1)     str_nZZ=                                               8

И откуда эти пробелы взялись? Раньше их не было. Теперь генерировать имена для файлов и пути стало весьма затруднительно - прошу исправить!

2022.11.08 02:05:12.908 Terminal        MetaTrader 5 x64 build 3492 started for MetaQuotes Software Corp.
2022.11.08 02:05:12.909 Terminal        Windows 7 Service Pack 1 build 7601, 8 x AMD FX-8350 Eight-Core, AVX, 23 / 31 Gb memory, 16 / 476 Gb disk, admin, GMT+3
Причина обращения: