Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1442

 

Что может быть не так

int aaa = StringFind(Set, txt);

Set - строка, в которой ищем.

txt - что ищем.

почему aaa = -1 ???

И вообще переменная string может как то отличаться от такой же переменной string

string  а = "А";

string  в = "А";

В каких случаях возможно, что  а!=в   ?

 

Можно как то отменить вывод ошибок подключения к базе данных?
Например функция DatabaseOpen() печатает ошибку каждый раз когда база залочена и фукция не может получить к ней доступ.
Но у меня это нормальная рабочая ситуация, эту ошибку я сам выловлю и выведу если будет нужно.

В итоге, весь лог забит сообщениями о залоченной базе.

2023.02.13 18:57:21.917 database error, database is locked
 

Здравствуйте, Aleksandr Slavskii.

Русская буква М не попала случайно в одну из строк?

 
Aleksandr Slavskii #:

Что может быть не так

Set - строка, в которой ищем.

txt - что ищем.

почему aaa = -1 ???

Здравствуйте, Александр! Может тип данных нужно было задать string, а не int? Вы же, вроде, текст ищите, а не число.

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

 
MrBrooklin #:

Здравствуйте, Александр! Может тип данных нужно было задать string, а не int? Вы же, вроде, текст ищите, а не число.

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

На картинке видно, что данные с типом  string ,  тип int возвращает функция  StringFind, а именно номер позиции с которой начинается искомая строка.

В данном случае функция должна была вернуть ноль.

 
Aleksandr Slavskii #:

Что может быть не так

Set - строка, в которой ищем.

txt - что ищем.

почему aaa = -1 ???

А почему отладчик посчитал 7 символов в txt если должно быть 6? А в Set как положено 26

 
Aleksandr Slavskii #:

На картинке видно, что данные с типом  string ,  тип int возвращает функция  StringFind, а именно номер позиции с которой начинается искомая строка.

В данном случае функция должна была вернуть ноль.

Понятно. Спасибо за разъяснение. Теперь познакомился с новой для меня функцией.

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

 
Alexey Viktorov #:

А почему отладчик посчитал 7 символов в txt если должно быть 6? А в Set как положено 26

Да, да, и это тоже странно, спасибо, что тут не так, начал проверять вопрос  Yuriy Bykov , скопировал с отладчика и вставил в код, получилась такая картинка.

 "
 RiskMM" (length: 7)        
 "RiskMM=0.3/0.3/0.3/0.3/0.3" (length: 26)

 Откуда то взялся перенос на другую строку.

Всем спасибо за помощь. Буду разбираться.

Yuriy Bykov
Yuriy Bykov
  • 2023.01.13
  • www.mql5.com
Профиль трейдера
 

А выделенное желтым не может так влиять? Уточняю в целях самообучения.

StringFind

Поиск подстроки в строке.

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

Параметры

string_value

[in]  Строка, в которой производится поиск.

match_substring

[in]  Искомая подстрока.

start_pos=0

[in]  Позиция в строке, с которой должен быть начат поиск.

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

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

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

 
MrBrooklin #:

А выделенное желтым не может так влиять? Уточняю в целях самообучения.

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

int     start_pos=0    Значение по умолчанию

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

StringFind(Set, txt);
StringFind(Set, txt, 0);

Это одно и то же.