Вопрос по структурам

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Francuz
172
Francuz  
   struct GeneralSettings
     {
      uchar             TypeSignal;
     };

   GeneralSettings GenS;
   GenS.TypeSignal=2;

Почему подобный код не позволяет использовать в подключаемом файле (.mqh)? Выкидывает ошибку:

'GenS' - declaration without type

Slava
Модератор
13448
Slava  

1. Дайте сюда Ваш mqh-файл

2. Покажите исходник с подключением этого самого mqh-файла

Francuz
172
Francuz  

2. Покажите исходник с подключением этого самого mqh-файла


Зачем нужен исходник с подключением если сам подключаемый файл не компилируется?

Файлы:
Hole.mqh 2 kb
Slava
Модератор
13448
Slava  

Текст ошибки неверный.

Нельзя на глобальном уровне писать выражения. Только инициализацию. В Вашем случае должно быть так

GeneralSettings GenS={2);
Компилятор ожидал инициализацию, поэтому и сказал про отсутсвие типа у инициализируемой переменной
Francuz
172
Francuz  

Спасибо за помощь.

Нельзя на глобальном уровне писать выражения.

Есть ли какая ссылка, где об этом можно почитать?

Francuz
172
Francuz  

Кроме того я не понимаю как работать со структурой на глобальном уровне.

Допустим я с помощью конструктора инициализировал переменную, но как её потом изменить?

Файлы:
Hole.mqh 2 kb
Slava
Модератор
13448
Slava  
Francuz:

Спасибо за помощь.

Есть ли какая ссылка, где об этом можно почитать?

https://www.mql5.com/ru/docs/basis
Документация по MQL5: Основы языка
Документация по MQL5: Основы языка
  • www.mql5.com
Язык MetaQuotes Language 5 (MQL5) является объектно-ориентированным языком программирования высокого уровня и предназначен для написания автоматических торговых стратегий, пользовательских технических индикаторов для анализа разнообразных финансовых рынков. Он позволяет не только писать разнообразные экспертные системы, предназначенные для...
Vladimir Karputov
Модератор
182113
Vladimir Karputov  

Включаемый файл "Hole.mqh":

//+------------------------------------------------------------------+
//|                                                         Hole.mqh |
//|                                                          Francuz |
//|                                           Francuz2000@rambler.ru |
//+------------------------------------------------------------------+
#property copyright "Francuz"
#property link      "Francuz2000@rambler.ru"
//+------------------------------------------------------------------+
//| Структура основных настроек                                      |
//+------------------------------------------------------------------+
struct GeneralSettings
  {
   uchar             TypeSignal;    // Тип робота (сигнала) от 1 до 20
  };
//+------------------------------------------------------------------+

размещаете в стандартном каталоге (обычно это каталог_терминала\MQL5\Include).


Создаёте проверочный скрипт в котором производите ПОДКЛЮЧЕНИЕ включаемого файла, ОБЪЯВЛЕНИЕ объекта GenS структуры GeneralSettings и присвоение полю структуры определённого значения:

//+------------------------------------------------------------------+
//|                                                     TestHole.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#include <Hole.mqh> // Угловые скобки обозначают, что файл Hole.mqh будет взят из стандартного каталога (обычно это каталог_терминала\MQL5\Include)
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   GeneralSettings GenS;
   GenS.TypeSignal=2;
  }
//+------------------------------------------------------------------+

ds

Francuz
172
Francuz  

Прежде чем задавать свой вопрос, я это всё прочитал дважды. И там нигде не упоминается, что:

Нельзя на глобальном уровне писать выражения. 

@Vladimir Karputov

спасибо за помощь. Я уже уяснил свой косяк. вся мудрость заключается в одном предложении:

Нельзя на глобальном уровне писать выражения. 

Только в документации об этом нет упоминания.

Vladimir Karputov
Модератор
182113
Vladimir Karputov  
Francuz:

Прежде чем задавать свой вопрос, я это всё прочитал дважды. И там нигде не упоминается, что:

@Vladimir Karputov

спасибо за помощь. Я уже уяснил свой косяк. вся мудрость заключается в одном предложении:

Только в документации об этом нет упоминания.


В документации не может быть всего: что-то познаётся на интуитивном уровне и запоминается как "Отче Наш", что-то приходит с опытом из других языков.

fxsaber
16756
fxsaber  
Francuz:
struct GeneralSettings
 {
  uchar             TypeSignal;
  
  GeneralSettings() {}
  GeneralSettings( const uchar Value ) : TypeSignal(Value) {} 
 };

GeneralSettings GenS(2);
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий