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

 
fxsaber:

Движок сайта не выделяет макрос красным.

Выделение цветом должно быть только если ранее макрос был определен

#define PRICEST_TICK_PRICE bid
//...
#define PRICEST_TICK_PRICE ask

а иначе как понять что макрос ранее уже не был определен?! и это не случайное переопределение

Иногда это даже в MetaEditor работает:


 
A100:

Выделение цветом должно быть только если ранее макрос был определен

а иначе как понять что макрос ранее уже не был определен?! и это не случайное переопределение

Тогда надо определиться, что обозначает подсвечиваемый цветом макрос, а что - не подсвечиваемый?

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

 
fxsaber:

Тогда надо определиться, что обозначает подсвечиваемый цветом макрос, а что - не подсвечиваемый?

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

Думаю нужно определиться для чего вообще нужна подсветка: для красивости или для информативности? Сейчас правил как таковых нет:

А вообще желательно чтобы если идентификатор был ранее уже определен и не отменен (undef), то он выделялся бы цветом

 
A100:

Думаю нужно определиться для чего вообще нужна подсветка: для красивости или для информативности? Сейчас правил как таковых нет:

Для меня удобно правило: макрос всегда красный.

 
fxsaber:

Для меня удобно правило: макрос всегда красный.

А в чем здесь удобство?
#define PRICEST_TICK_PRICE bid

В чем неудобство - понятно: нельзя понять ранее идентификатор PRICEST_TICK_PRICE был определен или нет

И с чего бы ему здесь (3)

//Ln 240
#define PRICEST_TICK_PRICE ask //(1)
#undef  PRICEST_TICK_PRICE     //(2)
void OnStart()
{
        int PRICEST_TICK_PRICE; //(3)
}

быть красным? А если он здесь (3) не красный, то почему в (1) должен быть красным?

Удобное правило: идентификатор красный только если ранее(!) он был определен и не отменен

 

A100:
А в чем здесь удобство?

Вижу, что это макрос. При этом боковым зрением не требуется видеть #define.

В чем неудобство - понятно: нельзя понять ранее идентификатор PRICEST_TICK_PRICE был определен или нет

Никогда по цвету не пытался определить. Более того, если все находится в #ifdef, то в MQL4 и MQL5 могут быть разные подцветки. Проще всего сделать ALT+G на имени макроса, чтобы понять, есть он или нет.

Удобное правило: идентификатор красный только если ранее(!) он был определен

Мне было бы удобно, если макрос хотя бы один раз где-то упомянут в #define, #ifdef, #undef и т.д. Даже если он не определен.

 
Vladimir Pastushak:

bool file_exists=(bool)FileGetInteger(FileName,FILE_EXISTS);

В любом случае возвращает true есть файл или нет, и если файла нет то ошибку 5019. По справке должна при отсутствии файла вернуть false.

   
bool file_exists=FileIsExist(FileName); Работает правильно

Вы определитесь, какой вариант функции хотите использовать - https://www.mql5.com/ru/docs/files/filegetinteger


Документация по MQL5: Файловые операции / FileGetInteger
Документация по MQL5: Файловые операции / FileGetInteger
  • www.mql5.com
[in]  Идентификатор свойства файла. Значение может быть одним из значений перечисления ENUM_FILE_PROPERTY_INTEGER. Если используется второй вариант функции, то можно получать значения только следующих свойств: [in]  Указывает на местоположение файла. Если параметр равен false, то просматривается каталог данных терминала, в противном случае...
 
fxsaber:

Мне было бы удобно, если макрос хотя бы один раз где-то упомянут в #define, #ifdef, #undef и т.д. Даже если он не определен.

Это потому что у Вас многие идентификаторы большими буквами, в то время как существует негласное правило что большие буквы предназначены для макросов (выделение макросов не цветом а шрифтом)

 
A100:

Это потому что у Вас многие идентификаторы большими буквами, в то время как существует негласное правило что большие буквы предназначены для макросов (выделение макросов не цветом а шрифтом)

Нет. Удобно, потому что логика однозначна.

 
fxsaber:

Нет. Удобно, потому что логика однозначна.

У меня логика простая: Х до #define Х это еще не макрос, а после #undef Х это уже не макрос (соответственно X выделяется цветом только там где он - макрос)