Logo

Вход

Войти с помощью соц. сетей
Пока нет объявлений.
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
  • #1 Свернуть

    Изменить string на int

    Всем добрый вечер! Возникла у меня такая задача, решение вроде придумал, но искренне надеюсь на то что вы мне подскажите более простой выход из ситуации.

    Описание:

    Есть строка(string). Например: У Пери [22] см, а Коли 18 см. Кого выберит Маша? )))
    И вот из э той строки мне нужно вытянуть число 22. Я делаю это так
    MQL код:

    string Oc = "У Пери [22] см, а Коли 18 см. Кого выберит Маша?";
    int bf = StringFind(Oc, "[", 0);
    int bl = StringFind(Oc, "]", 0);
    string ll_t = StringSubstr(Oc, (bf+1), (bl-bf));

    Вроде все хорошо, но мне потом нужно использовать ll_t, как целое число, а на данном этапе ll_t у меня в типе string, а мне нужно что бы оно было в типе int.

    Мои придложения)) Пока, что только одно это при помощи StringGetChar перебрать ll_t, и полученные результаты записать в новую переменную(типа int).

    Вопросы:
    1. Моя идея даст желаемый результат?
    2. Есть варианты попроще?

    P/S/ Заранне всем спасибо!
    Абсолютно не важно, прав ты или не прав. Важно лишь то, сколько денег ты зарабатываешь, когда прав, и сколько денег ты теряешь, когда ошибаешься.
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    MQL код:
    int ll_t = StrToInteger(StringSubstr(Oc, (bf+1), (bl-bf)));
    //попробуйте так последнюю строку изменить
     
    Последний раз редактировалось Gold; 30.08.2012, 06:17.
    Галактическое межсезонье и попутный ветер могут привести к плохим, беспутным пиратам

    Комментарий

    • #3 Свернуть

      Сообщение от udhit Посмотреть сообщение
      MQL код:
      int ll_t = StrToInteger(StringSubstr(Oc, (bf+1), (bl-bf)));
      //попробуйте так последнюю строку изменить
      Там же, но для типа double:
      double StrToDouble( string value)

      Преобразование строки, содержащей символьное представление числа, в число типа double (формат двойной точности с плавающей точкой).


      Вообще, преобразование типов — интересная тема. К примеру, кто ответит, не проверяя, чему будет равна переменная x (вопрос с подвохом)?
      PHP код:
      double d 6.54321
      int x 
      d
       
      Последний раз редактировалось Gold; 30.08.2012, 06:17.

      Комментарий

      • #4 Свернуть

        Сообщение от ppvic Посмотреть сообщение
        Вообще, преобразование типов — интересная тема. К примеру, кто ответит, не проверяя, чему будет равна переменная x (вопрос с подвохом)?
        Шести, пойду проверю теперь .
         

        Комментарий

        • #5 Свернуть

          Сообщение от ppvic Посмотреть сообщение
          double*d*=*6.54321
          int*x*=*d;
          Ошибка будет, после 6.54321 надо ;
           
          Галактическое межсезонье и попутный ветер могут привести к плохим, беспутным пиратам

          Комментарий

          • #6 Свернуть

            Сообщение от ILines Посмотреть сообщение
            1. Моя идея даст желаемый результат?
            Даст, но вот что? А вдруг строка будет выглядеть так: "У Пети [22] см, а Коли [18] см. Кого выберет Маша?". В итоге получаем - [22] см, а Коли [18], о каком дальнейшем преобразовании может идти речь?

            Получится что-то вроде:
            PHP код:
            void start()
              {
              
            Comment(StrToDouble("234.56"),"  ",StrToDouble("234.a6"));
              } 
            Еще не ясен вариант с отсутствием квадратных скобок в строке...

            Сообщение от ILines Посмотреть сообщение
            2. Есть варианты попроще?
            Опытным путем было установлено, что вторую квадратную скобку можно и не искать .
               

            Комментарий

            • #7 Свернуть

              Спасибо большое! Вот это я гоню!... Так лоханутся... Еще раз спасибо!
              А x скорее всего исходя из логики число 6.54321 долэно округлиться до 7, и таким образом x=7. Правильно?)))
               
              Абсолютно не важно, прав ты или не прав. Важно лишь то, сколько денег ты зарабатываешь, когда прав, и сколько денег ты теряешь, когда ошибаешься.

              Комментарий

              • #8 Свернуть

                Сообщение от ILines Посмотреть сообщение
                А x скорее всего исходя из логики число 6.54321 долэно округлиться до 7, и таким образом x=7. Правильно?)))
                Неа...
                x = MathFloor(d);
                6


                Я ж почему и сказал, что рассматриваемая тема преобразования типов очень интересна. Но нет, модераторы сочли по своему, и приписячили оную тему к теме "Вопросов начинающих"...
                Как говорится — если модератор нихера сам не мыслит в программировании, нечего и лезть в разделы обсуждения оного...
                 

                Комментарий

                • #9 Свернуть

                  fore-x
                  Ну, двух скобок по условию не должно быть. А если все таки и есть то по идеи фукция же должна вернуть номер первой [ и номер первой ]. Или нет? Если нет, то подскажите как избежать такого?)) А вариант без скобок просто рассматривать не нужно... А по поводу того, что вторую скобку искать не нужной, так я еще для того что бы в функции StringSubstr указать третий параметр(длину участка который нужно достать), т.к. число может быть не 22 а и к примеру 101...
                   
                  Абсолютно не важно, прав ты или не прав. Важно лишь то, сколько денег ты зарабатываешь, когда прав, и сколько денег ты теряешь, когда ошибаешься.

                  Комментарий

                  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
                  • #10 Свернуть

                    Сообщение от ILines Посмотреть сообщение
                    Ну, двух скобок по условию не должно быть. А если все таки и есть то по идеи фукция же должна вернуть номер первой [ и номер первой ]. Или нет? Если нет, то подскажите как избежать такого?)) А вариант без скобок просто рассматривать не нужно... А по поводу того, что вторую скобку искать не нужной, так я еще для того что бы в функции StringSubstr указать третий параметр(длину участка который нужно достать), т.к. число может быть не 22 а и к примеру 101...
                    Я же Вам уже пример приводил наглядный, ну если не поняли, то вот, держите готовый скрипт, который нужно бросить на график, ответ увидите в комментарии:

                    PHP код:
                    string Oc "У Пети [2234.58723] см, а Коли 18 см. Кого выберет Маша?";

                    void start()
                      {
                      
                    int bf StringFind(Oc"["0);
                      if(
                    bf >= 0Oc StringSubstr(Ocbf+1);
                      if(
                    Oc != ""Comment(StrToDouble(Oc));
                      } 
                     

                    Комментарий

                    Сейчас онлайн

                    working...
                    X