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

 
astronom55:
Здравствуйте. Мобильная версия MT5 не подключается к брокеру Alpari. В чем дело? Когда-то это будет устранено?

Здесь.

 
Sergey Dzyublik:

А в StringToShortArray написано то же:

Однако это не мешает ему адекватно обрабатывать NULL символы в строке.

ShortArrayToString( array, start, count ) неправильно работает: терминальный 0 это не любой 0, а только тот, который в конце. В данном случае конец или нет - можно определить исходя из ArraySize( array ). По крайней мере, если явно задан count, то результирующая строка должна быть не короче min( count, ArraySize( array ))

А StringToShortArray( text, array, start, count ) правильно работает: терминальный 0 - это тот, который в конце. А конец определяется исходя из StringLen( text )

 
Artyom Trishkin:

Здесь.

  • Вы не предоставили никаких конкретных материалов, чтоб можно было рассмотреть вашу проблему. - Эта проблема у всех пользователей на Android
  • Ваш вопрос настолько широк, что без уточнений нельзя ответить однозначно - Спрашивайте, что Вам не понятно.
  • Вы просто лентяй, который не читает документацию. Большинство ваших проблем просто от незнания базовых понятий языка MQL - Думаю, что этого нет в документации.
  • Вы забанены на доступ к google или просто не умеете пользоваться поиском - поиск не дал результатов.

1


Это только часть отзывов о мобильной версии MT5.

2

Это форум Альпари

А вы ничего об этом не знаете?

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
MetaQuotes Language 4 (MQL4) - встроенный язык программирования торговых стратегий, разработанный компанией MetaQuotes Software Corp. на основе своего многолетнего опыта в создании торгово-информационных платформ. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и...
 

при выполнении скрипта 


#include <Files\FileTxt.mqh>
void OnStart(){

  CFileTxt file;
  int handle = file.Open( "test.bat", FILE_WRITE | FILE_ANSI | FILE_REWRITE ); //
  if( handle == INVALID_HANDLE ){
    int error = GetLastError();
    Print("Ошибка создания файла, код ошибки ",  error );
    return;
  }
}


ошибка





в чем может быть причина?


если изменить имя файла 


int handle = file.Open( "test", FILE_WRITE | FILE_ANSI | FILE_REWRITE ); //

ошибки нет

 
Aleksey Sergan:

при выполнении скрипта 

ошибка

в чем может быть причина?

если изменить имя файла 

ошибки нет

В имени файла проблема.
Запрещена работа с "выполняемыми" файлами (exe, msi, bat, ...).

 
Sergey Dzyublik:

В имени файла проблема.
Запрещено создание "выполняемых" файлов (exe, msi, bat, ...).

Да, действительно так. В справке не нашел об этом ничего.

 

Может быть это несущественно, но строго говоря в сообщении об ошибках при компиляции

void A::operator=(const A&) тут (где стрелка) лишний (тем более, что он и по умолчанию генерируется то же)

 
Уже 4-й раз за день встречаю проблему с 100% CPU зависанием ME (build 2037).

Вначале появляется 100% нагрузка на ядро, но ME работает нормально - можно даже запускать отладку кода в МТ.
Однако, если попробовать перейти на другую вкладку с исходным кодом - ME полностью зависнет (нужно убивать процес), а окно новой вкладки так и не откроется (висит в полураскрытом состоянии).
Если же не переходить в новую вкладку, а просто закрыть МЕ, то процесс не закроется, а станет дочерним процессом МТ и будет дальше 100% нагружать ядро.

Проблема возникает на ровном месте, просто при разработке кода (небольшой проект, 8 файлов <3K строк сумарно) , предположительно "крашится" ME code intellisense.
 
Ура, удалось отловить код, который "крашит" анализатор ME.
МЕ падает при запуске. Без предварительной правки кода в другом редакторе МЕ не запустить.

При необходимости исходник будет предоставлен разработчикам через дней 5-7.
Проблема возникла со строкой:
if(
видимо что-то не так с подсчетом незакрытых скобок.
 
Опять час поиска ошибок в коде проекта привел к "специфике" работы MT5 (build 2049).

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

#define PRINT(x) Print(#x, ":", string(x))

void OnStart(){  
   string test_name;
   string test_result;  
   
   test_name = "394_TEST_____";
   for(int i = 0; i < 394; i++){
      PRINT(test_name + string(i+1));
   } 
   test_result = "RESULT_SUCCESS";
   PRINT(test_result);
   Sleep(5000);
   
   
   test_name = "395_TEST_____";
   for(int i = 0; i < 395; i++){
      PRINT(test_name + string(i+1));
   } 
   test_result = "RESULT_SUCCESS";
   PRINT(test_result);
   Sleep(5000);

   
   test_name = "396_TEST_____";
   for(int i = 0; i < 396; i++){
      PRINT(test_name + string(i+1));
   } 
   test_result = "RESULT_SUCCESS";
   PRINT(test_result);
   Sleep(5000);
}

Каким-то чудом очередь логов выбрасывает запись с номером 395, при этом все записи до и после этого номера выводятся в лог МТ.
Таким образом тест №395 всегда провальный.
Причина обращения: