Метод проверки вводимого input параметра - страница 4

 
barabashkakvn:

Даже в Visual Basic при вводе данных в поле ввода есть возможность проверять и изменять вводимые значения. В MQL5 и в MQL4 возможности корректировать вводимые параметры нет. Как замена отсутствующей возможности корректировать введенное значение и приходится прибегать к ограничению максимального введенного числа с помощью типа данных input-параметра. 

И вот здесь как раз выяснилась маленькая недоработка в языке MQL - на корректность ввода введенного параметра проверяется только левое (минимальное) значение типа данных, а правое значение (максимальное) введенного параметра не проверяется на корректность.

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

P.S. Кстати, MessageBox из индикатора не вызывается.

 

Позабавило "Даже в Visual Basic ..." как будто VB - это низшая ступень в программировании. А давайте сравним с Ассемблером: пока сам не сделаешь - никто не сделает.

В плане недоработок. Описываемая проблема не относится к MQL напрямую, а лишь к форме запроса параметров.

"В MQL5 и в MQL4 возможности корректировать вводимые параметры нет" - о какой корректировке здесь идет речь? В контексте "Даже в Visual Basic при вводе данных в поле ввода есть возможность проверять и изменять вводимые значения" это выглядит так, будто input параметры Вы не можете изменить никаким способом даже на этапе их ввода.

И потом, "левое значение типа данных" - это что?

1 байт данных - это ОДИН БАЙТ ДАННЫХ. Допустимые значения 0...255 (знаковые -128...127)

Число 999 (DEC) в один байт ну никак не поместить. Давайте попросим сделать MQL безтиповым языком, тогда проблема отпадет вовсе.

P.S. Из индикатора MessageBox(и не только) при желании вызвать можно (WinApi)

 
elugovoy:

 

Позабавило "Даже в Visual Basic ..." как будто VB - это низшая ступень в программировании. А давайте сравним с Ассемблером: пока сам не сделаешь - никто не сделает.

В плане недоработок. Описываемая проблема не относится к MQL напрямую, а лишь к форме запроса параметров.

"В MQL5 и в MQL4 возможности корректировать вводимые параметры нет" - о какой корректировке здесь идет речь? В контексте "Даже в Visual Basic при вводе данных в поле ввода есть возможность проверять и изменять вводимые значения" это выглядит так, будто input параметры Вы не можете изменить никаким способом даже на этапе их ввода.

И потом, "левое значение типа данных" - это что?

1 байт данных - это ОДИН БАЙТ ДАННЫХ. Допустимые значения 0...255 (знаковые -128...127)

Число 999 (DEC) в один байт ну никак не поместить. Давайте попросим сделать MQL безтиповым языком, тогда проблема отпадет вовсе.

P.S. Из индикатора MessageBox(и не только) при желании вызвать можно (WinApi)

Согласен, выразился неправильно. Вместо "левое значение" читать минимальное значение, а вместо "правое значение" читать максимальное значение.

 

P.S. Из индикатора MessageBox(и не только) при желании вызвать можно (WinApi) 

Это понятно, я даже при помощи WinApi сделал скрипт который делает полупрозрачным терминал. Но я уточнил, что именно применительно к MQL5, нельзя вызвать MessageBox в индикаторе.
Transparent MetaTrader 5
Transparent MetaTrader 5
  • голосов: 21
  • 2014.03.10
  • Karputov Vladimir
  • www.mql5.com
Данный скрипт позволяет делать полупрозрачным весь терминал.
 
elugovoy: 

1 байт данных - это ОДИН БАЙТ ДАННЫХ. Допустимые значения 0...255 (знаковые -128...127)

Число 999 (DEC) в один байт ну никак не поместить. Давайте попросим сделать MQL безтиповым языком, тогда проблема отпадет вовсе.

P.S. Из индикатора MessageBox(и не только) при желании вызвать можно (WinApi)

Дело в том, с развитием маркета, советниками пользуются не только те, кто их пишет. А программёру потом придется доказывать, что он не верблюд.

Тем более обещали исправить. В чем проблема, это еще один маленький шаг в обустройстве корректной работы терминала. Да и текста проверок там на порядок меньше, чем в этой теме

 
pronych:

Дело в том, с развитием маркета, советниками пользуются не только те, кто их пишет. А программёру потом придется доказывать, что он не верблюд.

Тем более обещали исправить. В чем проблема, это еще один маленький шаг в обустройстве корректной работы терминала. Да и текста проверок там на порядок меньше, чем в этой теме

Я же и говорю - проблема на пустом месте...

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

И если трейдер не может отличить 255 от 999, то кто же тогда верблюд ? ))) 

 
elugovoy:

К слову при вводе 999, должны получить 231, а не 12.

Введите тип int для параметра , затем валидацию, а уж потом если необходимо присвойте uchar.

Должны - да, а получим - что угодно:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Метод проверки вводимого input параметра

barabashkakvn, 2014.04.13 13:05

Для примера введите 300, а потом проверьте параметры индикатора. Затем введите 500 и проверьте значения. После переполнения значения будут непредсказуемы.

 

Кроме того, пользователь не будет знать, что реально используется значение 12 (или 231, или любое другое).

А проверку с сообщением сделать не проблема. Только речь не об этом.

 
komposter:
Спасибо за понимание проблемы. 
Надеюсь скоро будет введена, как и обещали в MQ, проверка ввода по типам данных.
Причина обращения: