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

 
A100:

Вопрос о допустимых символах в идентификаторах. Пример

В результате:

получили идентификатор переменной с пробелом.

Если переписать пример так:

 то можно сформулировать противоречие: А какая разница между (1) и (2)?

Ну а с точки зрения си/с++ в мкл ошибка. До/после оператора ## можно всунуть любое количество пробелов/комментариев, сначала будет произведена разбивка на токены, а потом запуск препроцессора, т.е. он эти пробелы даже не увидит, в стандарте пример есть (hash_hash):

#define hash_hash # ## #
#define mkstr(a) # a
#define in_between(a) mkstr(a)
#define join(c, d) in_between(c hash_hash d)
char p[] = join(x, y);    // equivalent tochar p[] = "x ## y";
#define MACRO( x )              x##:AAA

могут быть использованы только те токены, которые вместе формируют валидный токен.

ЗЫ: некоторые говрят, что си/с++ для них не авторитет, мол чего о них всё время вспоминают, да и вообще тут мкл, а не ..., может у них есть правильное объяснение?

 
Vict:

может у них есть правильное объяснение?

Обычно объяснение у них одно: так задумано мудрыми разработчиками )
 
При работе с большими исходными файлами ME сильно подвисает - два файла 30 мегабайт, даже переход с одного на другой приводит к подвисанию, особенно если копировать большой объем кода из одного в другой. Да и вообще, редактирование таких файлов приводит к работе в замедленном действии - утомляет.
 
Aleksey Vyazmikin:
При работе с большими исходными файлами ME сильно подвисает - два файла 30 мегабайт, даже переход с одного на другой приводит к подвисанию, особенно если копировать большой объем кода из одного в другой. Да и вообще, редактирование таких файлов приводит к работе в замедленном действии - утомляет.

30 МБ текста явно не нужно для работы. Один раз помучайтесь, потом вынесите эти данные в инклуд.

 
Andrey Khatimlianskii:

30 МБ текста явно не нужно для работы. Один раз помучайтесь, потом вынесите эти данные в инклуд.

Данные однотипные и подлежат постоянному редактированию, они составляют основу изменения советника.

 
Комментарии, не относящиеся к этой теме, были перенесены в "ООП, шаблоны и макросы в mql5, тонкости и приёмы использования".
 
Aleksey Vyazmikin:
При работе с большими исходными файлами ME сильно подвисает - два файла 30 мегабайт, даже переход с одного на другой приводит к подвисанию, особенно если копировать большой объем кода из одного в другой. Да и вообще, редактирование таких файлов приводит к работе в замедленном действии - утомляет.

по моему все тесктовые редакторы так себя будут вести

все равно нужно  на части такие огромные исходники пытаться разбить, или в библиотеки   ( library ) часть кода переписать

 

Помогите пожалуйста с маленькой задачей. Нужен скрипт, вызывающий LABEL, который будет тупо моргать с определенным интервалом, и всё. Частоту моргания и указание координат я сделаю сам, мне главное сама функция.

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

for(int i=0; i<50; i++)
   {
      if(!ObjectCreate(0,"Blink",OBJ_LABEL,0,0,0))
   {
      Print("Not Create! Error - ",GetLastError());
   }
   ObjectSetInteger(0,"Blink",OBJPROP_XDISTANCE,50);
   ObjectSetInteger(0,"Blink",OBJPROP_YDISTANCE,50);
   ObjectSetInteger(0,"Blink",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetString(0,"Blink",OBJPROP_TEXT,"Test");
   ObjectSetString(0,"Blink",OBJPROP_FONT,"Arial");
   ObjectSetInteger(0,"Blink",OBJPROP_FONTSIZE,18);
   ObjectSetDouble(0,"Blink",OBJPROP_ANGLE,0);
   ObjectSetInteger(0,"Blink",OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
   ObjectSetInteger(0,"Blink",OBJPROP_COLOR,Red);
   ObjectSetInteger(0,"Blink",OBJPROP_BACK,false);
   ObjectSetInteger(0,"Blink",OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,"Blink",OBJPROP_SELECTED,false);
   ObjectSetInteger(0,"Blink",OBJPROP_HIDDEN,true);
   ObjectSetInteger(0,"Blink",OBJPROP_ZORDER,0);
   
   Sleep(200);
   
   ObjectDelete(0,"Blink");
   
   Sleep(200);
   }
 

Вряд ли будете править, но вообще ошибка:

#define A world
#define MAKESTR(L) #L

void OnStart() {
   Alert( MAKESTR(A) );
}

Alert: world

ожидалось: Alert: A

 
Igor Makanu:

по моему все тесктовые редакторы так себя будут вести

все равно нужно  на части такие огромные исходники пытаться разбить, или в библиотеки   ( library ) часть кода переписать

EditPad Lite отлично работает с файлами в гигабайт, копирует и редактирует - очень понравилась утилита. А значит это реально. Я понимаю, прогруз первоначальный при открытии, или если долго не работаешь с вкладкой, но сейчас даже редактировать файл весьма затруднительно.