MetaTrader 4 Client Terminal build 646: Умный поиск, книги в Маркете и обновление окна параметров MQL4-программы - страница 9

 
Alexey_74:


Причину не нашли?

Воспроизвел Вашу ситуацию, мгновенно получил в журнале: 2014.05.06 13:50:41.023 Debugging - symbol 'XAUUSDX' is not selected

вынь7х64. Все впорядке, МЕ не повис, вынь не упала, просто дебаггер не стал работать.


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

Билд 646. Компилятор не находит сразу все необъявленные переменные даже в одной зоне видимости. Например, была объявлена глобальная переменная abc и была использована 5 раз в одной зоне видимости. Потом в самом объявлении меняем имя переменной на abcd и компилируем. Компилятор, разумеется, выдает сообщение undeclared identifier abc. Но ни разу не выдает 5 строк. Может выдать 3 строки. После исправления в этих строках имени переменной и последующей компиляции, компилятор выдаст оставшиеся 2 undeclared identifier.

 
Alexey_74:

Билд 646. Компилятор не находит сразу все необъявленные переменные даже в одной зоне видимости. Например, была объявлена глобальная переменная abc и была использована 5 раз в одной зоне видимости. Потом в самом объявлении меняем имя переменной на abcd и компилируем. Компилятор, разумеется, выдает сообщение undeclared identifier abc. Но ни разу не выдает 5 строк. Может выдать 3 строки. После исправления в этих строках имени переменной и последующей компиляции, компилятор выдаст оставшиеся 2 undeclared identifier.

Да, заметил. Такое ощущение, что компилятор, дойдя до первой необъявленной переменной, дальше уже не смотрит. Раньше можно было одним махом найти и исправить все ошибки из-за изменения имени переменной. Сейчас приходится каждый раз компилировать, чтобы он нашёл следующую ошибочную переменную. Поиск с заменой не всегда нужен. Иногда нужно поменять имена части переменных. Было просто - меняешь имя переменной, после компиляции находишь все вхождения этих имён, исправляешь на новое имя только в тех местах кода, где оно нужно, а потом вписываешь новую переменную со старым именем, чтобы остальные (не исправленные) опять имели свою объявленную переменную.
 
artmedia70:
Да, заметил. Такое ощущение, что компилятор, дойдя до первой необъявленной переменной, дальше уже не смотрит. Раньше можно было одним махом найти и исправить все ошибки из-за изменения имени переменной. Сейчас приходится каждый раз компилировать, чтобы он нашёл следующую ошибочную переменную. Поиск с заменой не всегда нужен. Иногда нужно поменять имена части переменных. Было просто - меняешь имя переменной, после компиляции находишь все вхождения этих имён, исправляешь на новое имя только в тех местах кода, где оно нужно, а потом вписываешь новую переменную со старым именем, чтобы остальные (не исправленные) опять имели свою объявленную переменную.


Вот-вот...
 

Что-то непонятное с константами.

 
Y.A.K._:

Что-то непонятное с константами.

Поясните, что не так?

Встроенный макрос REASON_INITFAILED имеет значение 9
 
mql5:
Поясните, что не так?

Встроенный макрос REASON_INITFAILED имеет значение 9
Значит здесь неправильно? И в локальной справке?

Ну а вообще причина у меня там была такая:

      return(INIT_PARAMETERS_INCORRECT);

Хотя слова "Встроенный макрос" несколько сбили с толку. Это не то же самое, что константы?

 
Y.A.K._:
Значит здесь неправильно? И в локальной справке?

Ну а вообще причина у меня там была такая:

Хотя слова "Встроенный макрос" несколько сбили с толку. Это не то же самое, что константы?

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

Справку поправим.

 

Всё равно непонятно.

reason=8, что вроде бы и должно было случиться согласно неправильной на данный момент справке: "Признак того, что обработчик OnInit() вернул ненулевое значение"

Я попробовал использовать сначала REASON_INITFAILED, но когда сработала функция DeleteAllTempFiles(), начал разбираться, почему это случилось.

Или при использовании в OnInit()

      return(INIT_PARAMETERS_INCORRECT);

должно возвращаться не REASON_INITFAILED?

 


MetaQuotes:

"Используйте макросы/дефайны вместо абсолютных значений и тогда не будет проблем. Справку поправим."


Имя встроенной константы REASON_INITFAILED означает что-то другое? Откуда макрос? Когда я вставляю в исходный код это имя (без дефайнов), пребываю в уверенности, что при исполнении из этого места скомпилированного кода в нужный регистр процессора сразу смувируется ее значение. Даже в следующем билде, где это значение будет другим. Достаточно лишь скомпилировать.

А тут что, еще макрос будет дополнительно исполняться?

И еще вопрос, что такое "абсолютные значения". Очевидно, речь не о MathAbs(). Чем они отличаются от просто значений?

Причина обращения: