Попробуйте так:
//+------------------------------------------------------------------+ //| CheckStringSetChar.mq4 | //| Copyright © 2007, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ru/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/ru/" //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- string origtxt="_#020030000000000000585114785280000108.99119610720000107.18"; string nameObj=StringSetChar(origtxt,10,'h'); Print("origtxt=",origtxt); Print("nameObj=",nameObj); //---- return(0); } //+------------------------------------------------------------------+
nen, третий параметр должен быть не строковым, а кодом знака (число int)
Пример в справке к функции:
Возвращает копию строки с измененным значением символа в указанной позиции. ...... Пример: |
string str="abcdefgh"; string str1=StringSetChar(str, 3, 'D'); // str1 = "abcDefgh"
To Rosh:
Выходит, что необходимо символ не в такие кавычки заключать - " ", а в такие - ' '.
В этом случае ошибки нет. Все выходит. Но.
Я специально упростил пример. На самом деле символ необходимо подставлять из массива: PL[].
При подстановке симола из массива каким образом сделать так, чтобы функция понимала, в какие кавычки заключен символ.
Во всех других (ну по крайней мере, во многих других) случаях кавычки " " понимаются правильно.
А в работе с данной функцией они не воспринимаются.
Здесь напрашивается функция CharToInt(), но ее нет...
При подстановке симола из массива каким образом сделать так, чтобы функция понимала, в какие кавычки заключен символ.
StringSetChar(origtxt,10,StringGetChar(StringArray[i],0));
А почему бы не пофлудить? Почему Вам можно флудить, а другим нельзя?
===============
Спасибо, Integer.
Раньше видел эту функцию, а когда она понадобилась, то не нашел ее.
Век живи - век учись. Уже в который раз выручаешь.
Заработался. Не заметил, какой тип параметра должен быть в функции.
Другой вариант, но корявый: nameObj=StringSubstr(txt,0,10)+PL[0]+StringSubstr(txt,11);
Пытаюсь в 10 позицию строки вставить символ.
Строка:
string txt="_#020030000000000000585114785280000108.99119610720000107.18"
Код:
string nameObj=StringSetChar(txt,10,"h");
В закладке Экперты появляется ошибка:
2008.04.03 12:29:33 ATL_v7 USDJPY,Monthly: invalid integer number as parameter 3 for StringSetChar function
Необходимо было вставить вместо "0" "1". Не получилось. Попытался символ вставить, как в примере. Таже ошибка.
В чем может быть причина ошибки? Голову сломал.
Причина в том, что символ и строка разные сущности. В С\С++ строка отличается наличием признака конца строки. Даже в односимвольной строке на самом деле два символа :).
В МКЛ, судя по примерам, это вообще структура ( с полями целым и символьным). Символ же имеет только одно\двухбайтовый код и за неимением типа чар кодируется как инт.
Успехов.
ЗЫ Пока писал - уже ответили :).
Всем спасибо.
Сказывается прошлый опыт программирования, на других языках.
Надо быть внимательнее (это я себе пишу).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Строка:
string txt="_#020030000000000000585114785280000108.99119610720000107.18"
Код:
string nameObj=StringSetChar(txt,10,"h");
В закладке Экперты появляется ошибка:
2008.04.03 12:29:33 ATL_v7 USDJPY,Monthly: invalid integer number as parameter 3 for StringSetChar function
Необходимо было вставить вместо "0" "1". Не получилось. Попытался символ вставить, как в примере. Таже ошибка.
В чем может быть причина ошибки? Голову сломал.