На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
  
> Странная ошибка
    Вот часть кода:

    ExpandedWrap disabled
          int pos=str.indexOf(QString("secure"));
          int i=0;
          pos=pos+29;
          QString value;
          while(str[pos]!=">") {
              value[i]=str[pos];
              i++;
              pos++;  
          }


    В чем ошибка?
      Цитата Mizantrop @
      В чем ошибка?

      В том, что value[i] не корректно, ибо строка пустая.
        Тогда как мне изменить i-ый символ строки value на соответствующий из строки str?
          Цитата Mizantrop @
          Тогда как мне изменить i-ый символ строки value на соответствующий из строки str?

          Видишь ли, когда value представляет из себя строку в 5 символов длиной, то ты без каких-либо проблем можешь менять 0, 1, 2, 3 и 4 символы этой строки, но, когда value представляет из себя строку в 0 символов длиной, то ты не можешь менять в ней ни один символ ибо их просто нет!

          Добавлено
          Напиши что ли
          ExpandedWrap disabled
            if(value.size() <= i)
                value.resize(i + 10);
            value[i] = ...
            Все равно ошибки выводит.

            ExpandedWrap disabled
              QString BOT::readResponse() {
                  QTextStream stream(socket);
                  QString str;
                  while(!stream.atEnd()) {
                      str.append(stream.readLine());
                  }
               
                  int pos=str.indexOf(QString("secure"));
                  int i=0;
                  pos=pos+29;
                  QString value;
                  while(str[pos]!=">") {
                      if(value.size() <= i)
                              value.resize(i + 10);
                      value[i]=str.at(pos);
                      i++;
                      pos++;  
                  }
                  
                  status->setText(value);
                  html->clear();
                  html->append(str);
                  return str;
              }
              Цитата Mizantrop @
              Все равно ошибки выводит.

              Что в твоём понимании "выводит ошибки"?
                In BOT::readResponse() conversion of const char[2] to QChar is ambigious. Ошибки при компиляции
                  Блин, а сразу так сказать нельзя было? Или ты думаешь мы тут телепаты?


                  Цитата Mizantrop @
                  while(str[pos]!=">") {

                  Здесь ошибка... нужно использовать не двойные кавычки, а одинарные.

                  И на будущее: если есть ошибки компиляции, то указывай их полностью и на какую конкретно строку ругается!
                    Упс..Прошу прощения, что не указал ошибку сразу. На самом деле я вас очень хорошо понимаю по поводу телепатов..Так что извините)
                      Все равно ничего не получается. Теперь ошибок компиляции нет, но при запуске получаю уведомление о том, что стоит позвонить Билли. Вот код, который я пытаюсь перевести:

                      ExpandedWrap disabled
                        char *html = "<html>....<input name=\"var_name\" value=\"var_value\" />..........</html>"; // тут весь HTML
                        char *namep = strstr( html, "name=\"var_name\"" ); // найти переменную
                        if( namep )
                        {
                            char *valp = strstr( namep, "value=\"" ); // найти её значение
                            if( valp )
                            {
                                char value[256] = {0};
                                char *cvp = value;
                                valp += strlen( "value=\"" );
                                while( (*valp) != '\"' ) *cvp++ = *valp++; // это почти strcpy()
                                *cvp = 0; // теперь в char value[256] значение
                            }
                        }


                      Получилось у меня следующее:

                      ExpandedWrap disabled
                        int pos=str.indexOf(QString("secure"));
                        int i=0;
                        pos=pos+29;
                        QString value="tratratra";
                        while(str.at(pos)!='>') {
                            if(value.size() <= i)
                                    value.resize(i + 10);
                            value[i]=str.at(pos);
                            i++;
                            pos++;  
                        }
                        ExpandedWrap disabled
                          //char *html = "<html>....<input name=\"var_name\" value=\"var_value\" />..........</html>"; // тут весь HTML
                          QString html = "<html>....<input name=\"var_name\" value=\"var_value\" />..........</html>";
                          //char *namep = strstr( html, "name=\"var_name\"" ); // найти переменную
                          int namep = html.indexOf(QLatin1String("name=\"var_name\""));
                          //if( namep )
                          if( namep != -1 )
                          {
                              //char *valp = strstr( namep, "value=\"" ); // найти её значение
                              int valp = html.indexOf("value=\"", namep); // найти её значение
                              //if( valp )
                              if( valp != -1 )
                              {
                                  //char value[256] = {0};
                                  QString value(256, '\0');
                                  //char *cvp = value;
                                  int cvp = 0;
                                  //valp += strlen( "value=\"" );
                                  valp += QString(QLatin1String("value=\"")).length();
                                  //while( (*valp) != '\"' ) *cvp++ = *valp++; // это почти strcpy()
                                  while (html[valp] != '\"') value[cvp++] = html[valp++];
                                  //*cvp = 0; // теперь в char value[256] значение
                                  value.resize(cvp);
                              }
                          }
                          Archimed7592, спасибо!
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0391 ]   [ 16 queries used ]   [ Generated: 3.05.24, 18:26 GMT ]