Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пользуйся функцией вставки контента из Кармана. Это удобно!
Andrei Savelyeu
11
Andrei Savelyeu 2015.06.27 08:32 

Доброго времени суток уважаемые форумчане.
Недавно начал изучение MQL4.
При создании первой программы по уроку:
https://book.mql4.com/ru/programm/execution
Вылезло несколько ошибок и вопросов:
1. функция init в уроке выглядит следующим образом:

int init()                             // Специальная функция inint()
  {
   Alert("Сработала функция init() при запуске");        // Сообщение
   return(0);                                         // Выход из init()
  }

Однако при компиляции возникает такая ошибка: 'return' - function must return a value

Так и должно быть, получается в книге в примере указан ошибочный код?
Я обошел это сделав: 

return(0);
Но как по мне это костыльно. Из-за чего возникает такая ошибка? И как ее избежать?
2. Прикрепил этот "советник" к окну терминала, но кириллическая часть сообщения выводится в виде вопросов:

Сохранял файл как Unicode(Save As Unicode) не помогло.
Как сделать так что б кириллические символы отображались нормально?
3. Что не так в этой пользовательской функции(взята тоже из учебника - https://book.mql4.com/ru/programm/samples):
int myFunction()                // Описание пользовательской функции
  {
   Count++;                                         // Счетчик тиков
  }
Переменная Count объявлена глобальной в самом начале:
int Count=0;
При компиляции возникает следующая ошибка: '}' - not all control paths return a value learnEx 2 UserFunction.mq4 39 3 39 строка - закрывающаие фигурные скобки
Спасибо за помощь )
Vitalie Postolache
11009
Vitalie Postolache 2015.06.27 21:06  

Этот учебник уже старенький, читайте Документацию или встроенную справку МЕ.

1. Это не костыльно, это нормально, чтобы функция что-то возвращала по окончании работы. Если не нужно возвращать результат работы, есть void.

2. Проблема в убунте, наcтройте её, раз уж от виндовса воротит.

3. Опять же, функции, кроме типа войд, обязаны возвращать результат вычислений (return(Count)), об этом компилятор и пишет. А так, если переменная глобальна, то вполне можно обойтись войдом и ничего не возвращать:

int Count=0;
void myFunction()                // Описание пользовательской функции
  {
   Count++;                                         // Счетчик тиков
  }
Andrei Savelyeu
11
Andrei Savelyeu 2015.06.29 06:46  
Спасибо, советы очень помогли. Сейчас все работает должным образом.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий