- Помогите с индикатором !!!!
- помощь с закрытием ордеров
- Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6.
Готовой встроенной функции для этого нет, самостоятельно придётся.
Самый простой, но не самый надёжный способ - преобразовать этот текст в число функцией StringToDouble(): если в строке не число, то результат будет нулевым. Но если в строке нули, то результат тоже будет нулевым. Более надёжный - перебрать все символы и проверить, что каждый из них либо находится в интервале '0' - '9', либо является десятичной точкой (одна), либо является знаком минус (в начале).
ЗЫ. Написал для себя, пригодится.
bool StringIsNumber(const string sString) { // преобразуем строку в массив символов, сохраняем их количество uchar ch[]; int nTotalChars = StringToCharArray(sString, ch); nTotalChars--; // закрывающий '\0' не учитываем // пробелы допускаются только в начале и в конце строки, // определим индексы начала и окончания строки без учёта // начальных и конечных пробелов int nStartPos = 0; int nEndPos = nTotalChars - 1; for(int i = 0; i < nTotalChars; i++) { if(ch[i] != ' ') { nStartPos = i; break; } } for(int i = nTotalChars - 1; i >= nStartPos; i--) { if(ch[i] != ' ') { nEndPos = i; break; } } // парсим оставшуюся часть строки int nDigitsNumber = 0; int nDotsNumber = 0; for(int i = nStartPos; i <= nEndPos; i++) { // проверим, является ли символ числом if(ch[i] >= '0' && ch[i] <= '9') { // подсчитываем количество цифр в строке (их должно быть не меньше одной) nDigitsNumber++; } // если текущий символ не является числом, то проверим его на знак и на точку else { // в начале строки допустим знак + или - if(i == nStartPos && (ch[i] == '+' || ch[i] == '-')) continue; // допускается одна десятичная точка else if(ch[i] == '.') { nDotsNumber++; continue; } // текущий символ не является ни цифрой, ни знаком, ни точкой - строка не является числом else return(false); } } // если парсинг прошёл успешно, то проверим количество цифр и десятичных точек if(nDigitsNumber == 0 || nDotsNumber > 1) return(false); return(true); }
string это массив char символов. все символы расписаны в таблице ASCII
получается определить что это цифра просто сравнить что char лежит в диапозоне >47 && < 58
Для текста тоже самое. английский 64 -122 русский 160-255.
Есть небольшие нюансы, google в помощь.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования