Непонятная ошибка при работе функции StringSetChar()

 
Пытаюсь в 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". Не получилось. Попытался символ вставить, как в примере. Таже ошибка.


В чем может быть причина ошибки? Голову сломал.

 
Так Вам, что, надо перевести фразу "invalid integer number as parameter 3 for StringSetChar function" ?!
 
nen, третий параметр должен быть не строковым, а кодом знака (число int)
 

Попробуйте так:

//+------------------------------------------------------------------+
//|                                           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);
  }
//+------------------------------------------------------------------+


 
Integer:
nen, третий параметр должен быть не строковым, а кодом знака (число int)

Пример в справке к функции:


string StringSetChar( string text, int pos, int value)

Возвращает копию строки с измененным значением символа в указанной позиции.

......

Пример:
  string str="abcdefgh";
  string str1=StringSetChar(str, 3, 'D');
  // str1 = "abcDefgh"


To Rosh:

Выходит, что необходимо символ не в такие кавычки заключать - " ", а в такие - ' '.

В этом случае ошибки нет. Все выходит. Но.

Я специально упростил пример. На самом деле символ необходимо подставлять из массива: PL[].

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

Во всех других (ну по крайней мере, во многих других) случаях кавычки " " понимаются правильно.

А в работе с данной функцией они не воспринимаются.


Здесь напрашивается функция CharToInt(), но ее нет...

 
nen:

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

Поможет StringGetChar();
StringSetChar(origtxt,10,StringGetChar(StringArray[i],0));
 
SergNF: Это программирование, а не флуд на форумах - все строго.


А почему бы не пофлудить? Почему Вам можно флудить, а другим нельзя?


===============

Спасибо, Integer.


Раньше видел эту функцию, а когда она понадобилась, то не нашел ее.

Век живи - век учись. Уже в который раз выручаешь.


Заработался. Не заметил, какой тип параметра должен быть в функции.


Другой вариант, но корявый: nameObj=StringSubstr(txt,0,10)+PL[0]+StringSubstr(txt,11);

 
nen:
Пытаюсь в 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". Не получилось. Попытался символ вставить, как в примере. Таже ошибка.


В чем может быть причина ошибки? Голову сломал.

Причина в том, что символ и строка разные сущности. В С\С++ строка отличается наличием признака конца строки. Даже в односимвольной строке на самом деле два символа :).

В МКЛ, судя по примерам, это вообще структура ( с полями целым и символьным). Символ же имеет только одно\двухбайтовый код и за неимением типа чар кодируется как инт.


Успехов.


ЗЫ Пока писал - уже ответили :).

 

Всем спасибо.

Сказывается прошлый опыт программирования, на других языках.

Надо быть внимательнее (это я себе пишу).