Пожелания для МТ5 - страница 72

 
stringo:

Обсуждали уже. Выяснили, что можно обойтись уже имеющимся функционалом. 

Да ладно? И каким же функционалом можно обойтись, напомните, пожалуйста?
 
Почему глобальные переменные только типа double? И в 4-ке мешало страшно, и в 5-ке не понятно почему нет, в частности строковых.
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 

TheXpert:
Да ладно? И каким же функционалом можно обойтись, напомните, пожалуйста?

Я же сказал. Имеющимся.

Например, заголовочные файлы у нас включаются однократно. Нет необходимости в #ifdef

Вместо макроподстановок констант в зависимости от условия можно использовать переменные, инициализирующиеся по-разному в разных условиях.

Условия можно задавать опять же не дефайнами, а константными переменными

Наличие константы IS_DEBUG_MODE

Возможность на лету определять в каком окружении работает программа (тестирование, отладка, визуальное тестирование, оптимизация, разрешение использовать dll) 

 
marketeer:
Почему глобальные переменные только типа double? И в 4-ке мешало страшно, и в 5-ке не понятно почему нет, в частности строковых.

 

Это максимальный размер числовых данных. В глобальную переменную вы можете поместить целых 8 байт информации, которую можете интерпретировать как угодно - как long, как 2 инта или как 64 бита

Почему глобальные переменные не могут быть типа string, по той же самой причине, что глобальные переменные не могут быть массивами - чтобы излишне не усложнять

 
stringo:

Почему глобальные переменные не могут быть типа string, по той же самой причине, что глобальные переменные не могут быть массивами - чтобы излишне не усложнять

Слава, в данном случае общественность с вами вряд ли согласится - данное усложнение было бы совсем не излишним.  Потребность  очень  велика. Хотите проголосуем?
 
MetaDriver:
Слава, в данном случае общественность с вами вряд ли согласится - данное усложнение было бы совсем не излишним.  Потребность  очень  велика. Хотите проголосуем?

 

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

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

Кстати, по поводу строковых глобальных переменных. Они ведь нужны для обмена строковыми данными между программами в пределах одного клиентского терминала? Так почему бы не передавать строки напрямую, через пользовательские события? Это гораздо более эффективный метод, чем обмен данными через глобальные переменные.

 
stringo:

Это максимальный размер числовых данных. В глобальную переменную вы можете поместить целых 8 байт информации, которую можете интерпретировать как угодно - как long, как 2 инта или как 64 бита

Почему глобальные переменные не могут быть типа string, по той же самой причине, что глобальные переменные не могут быть массивами - чтобы излишне не усложнять

Знакомая аргументация: Вы упрощаете жизнь себе, и усложняете пользователям, хотя программа вроде бы пишется дли них. Особого усложнения в плане реализации для вас нет, а вот пытаться "интерпретировать" этот double как угодно за неимением ничего другого - это и есть усложение для прикладника, если не сказать покрепче. Пока приходится подручными средствами эмулировать глобальные переменные прочих типов - то, что вы могли бы в системе сделать один раз, прикладники мастерят каждый у себя.
 
stringo:

Кстати, по поводу строковых глобальных переменных. Они ведь нужны для обмена строковыми данными между программами в пределах одного клиентского терминала? Так почему бы не передавать строки напрямую, через пользовательские события? Это гораздо более эффективный метод, чем обмен данными через глобальные переменные.

Это совершенно разные вещи. Состояние должно храниться и быть доступным, а сообщения - средство изменения состояний.
 
marketeer:
Знакомая аргументация: Вы упрощаете жизнь себе, и усложняете пользователям, хотя программа вроде бы пишется дли них. Особого усложнения в плане реализации для вас нет, а вот пытаться "интерпретировать" этот double как угодно за неимением ничего другого - это и есть усложение для прикладника, если не сказать покрепче. Пока приходится подручными средствами эмулировать глобальные переменные прочих типов - то, что вы могли бы в системе сделать один раз, прикладники мастерят каждый у себя.

 

Зачем что-то эмулировать? В 8 байтах глобальной переменной вы можете хранить данные любого типа, кроме строкового. Если это данные типа double, то вы напрямую используете полученное значение. Если это данные другого типа, то необходима одна дополнительная операция копирования простых структур, чтобы получить данные нужного типа.

 
stringo:

 

Зачем что-то эмулировать? В 8 байтах глобальной переменной вы можете хранить данные любого типа, кроме строкового. Если это данные типа double, то вы напрямую используете полученное значение. Если это данные другого типа, то необходима одна дополнительная операция копирования простых структур, чтобы получить данные нужного типа.

Меня в первую очередь интересовали строки.
Причина обращения: