Самообучение языку MQL5 с полного нуля - страница 77

 
MrBrooklin:

Здравствуйте, Алексей! Честно говоря, не силен в программировании. Это получается, что код, предоставленный Константином нужно доработать?

С уважением, Владимир.

Его надо доработать и выкинуть.

 
Alexey Viktorov:

Его надо доработать и выкинуть.

Зачем же так жестоко!

Спасибо, Алексей!!! Ваш код работает идеально.

С уважением, Владимир.

 

Алексей, на счёт поиска всё понятно, т.к. StringFind - это поиск подстроки в строке:

int  StringFind( 
   string  string_value,        // строка, в которой ищем 
   string  match_substring,     // что ищем 
   int     start_pos=0          // с какой позиции начинать поиск 
   );

Единственное, что пока не могу осознать, так это почему при поиске подстроки в строке проверяем функцию на равенство нулю?

if(StringFind(_Symbol, Symbol_Main, 0) == 0)

С уважением, Владимир.

 
MrBrooklin:

Алексей, на счёт поиска всё понятно, т.к. StringFind - это поиск подстроки в строке:

Единственное, что пока не могу осознать, так это почему при поиске подстроки в строке проверяем функцию на равенство нулю?

С уважением, Владимир.

Из документации

Возвращаемое значение

Возвращает номер позиции в строке, с которой начинается искомая подстрока, либо -1, если подстрока не найдена.

то-есть символ графика начинается с "GBPUSD" и не важно какой суффикс приделан.

Хотя я тоже чуток поспешил. Если ввести только "GBP" например, то будет валидным любой график если базовая валюта "GBP". Дополнительно надо-бы поставить проверку на длину вводимого текста в строке input.
 
Alexey Viktorov:

Из документации

то-есть символ графика начинается с "GBPUSD" и не важно какой суффикс приделан.

Хотя я тоже чуток поспешил. Если ввести только "GBP" например, то будет валидным любой график если базовая валюта "GBP". Дополнительно надо-бы поставить проверку на длину вводимого текста в строке input.

а просто сравнить? и ограничить ввод маленьких букв. или енум, что бы от дурака))))

 
Alexey Viktorov:

Из документации

то-есть символ графика начинается с "GBPUSD" и не важно какой суффикс приделан.

Хотя я тоже чуток поспешил. Если ввести только "GBP" например, то будет валидным любой график если базовая валюта "GBP". Дополнительно надо-бы поставить проверку на длину вводимого текста в строке input.

Понятно!

С уважением, Владимир.

 
Valeriy Yastremskiy:

а просто сравнить? и ограничить ввод маленьких букв. или енум, что бы от дурака))))

Здравствуйте, Валерий! С самого начала с ENUM_SYMBOL_INFO_STRING и начинал, но почему-то ничего не получилось. Хотя, можно и ещё раз попробовать.

С уважением, Владимир.

 
Valeriy Yastremskiy:

а просто сравнить? и ограничить ввод маленьких букв. или енум, что бы от дурака))))

Можно и просто сравнить, но если символы с суффиксом, то надо и вводить как есть. В общем вариантов достаточно много и тут о вкусах фломастеров спорить бесперспективное занятие.

А вот если enum то поиск в строке будет обязателен. Так-как в enum вписываются чистые имена символов, а график может быть с любым довеском.

 
Alexey Viktorov:

Зачем-же так издеваться над неокрепшим умом? Ваш код абсолютно не отвечает требованию. Если во входные параметры ввести только "eu" или "eur" то эта часть условия

будет выполнена независимо от того какая это пара содержащая в названии "EU" и не важно EUR базовая валюта или котируемая. Да и зачем перебирать SymbolName MarketWatch в поиске нужного символа?¿?

Алексей, вполне нормальный код. Не нормально, это вводить в параметр несколько символов, чего вряд-ли кто будет делать.

У меня примерно такая-же реализация в рабочем продукте.

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

 
Alexey Viktorov:

Можно и просто сравнить, но если символы с суффиксом, то надо и вводить как есть. В общем вариантов достаточно много и тут о вкусах фломастеров спорить бесперспективное занятие.

А вот если enum то поиск в строке будет обязателен. Так-как в enum вписываются чистые имена символов, а график может быть с любым довеском.

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

С уважением, Владимир.