Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ QStringList

Автор: flankerr 28.10.2008, 16:00

QStringList QProcess::systemEnvironment ()

как выудить значение интересующеё меня переменной из QStringList ?

Автор: AD 28.10.2008, 16:07

Цитата(flankerr @ 28.10.2008, 16:00) *
QStringList QProcess::systemEnvironment ()

как выудить значение интересующеё меня переменной из QStringList ?

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

Автор: flankerr 28.10.2008, 16:07

вообще если честно не понмиаю как работаьт с кт-шным стринглистом

Автор: AD 28.10.2008, 16:14

В цикле выбираешь значения типа QString. А с ними производишь нужные тебе действия. А вообще QStringList = QList<QString>!
Обычная работа со списками, если непонятно как работать со списками, почитай про структуры данных.

QStringList list;
list << "Out" << "Begin" << "2+2" << "6^902" << "In";
for(QList<QString>::iterator iter = list.begin(); iter!=list.end(); ++iter)
{
    QString one_list_name = *iter;
                // your actions
}

Автор: Litkevich Yuriy 28.10.2008, 16:16

flankerr, это просто контейнер QList, как с ними работать посмотри http://crossplatform.ru/documentation/qtdoc4.3/containers.php, если что-то не понятно задавай вопросы здесь

AD, с Qt'явыми контейнерами удобнее работать через foreach

Автор: flankerr 28.10.2008, 16:17

так со стринглистом понял, спасибо.

но ведь жутко неудобно. Это мне надо пробегаться по всему списку проверять каждую строку на вхождение а потом ещё её и парсить....
А может есть что мене геморойное аля getenv() ???


зы
хотя getenv() вроде как в stdlib.h т.е. по идее обинаково будет арботать на всех платформах...

Автор: Litkevich Yuriy 28.10.2008, 16:30

Ну например так:

QString   value;   
QStringList list;
    ...
    foreach (QString str, list)
    {
        if (str.isEmpty())
            break;
        if (str.contains ( QRegExp("PATH") )
        {
            value = str;
            break;
        }
    }


потом обрабатывать строку

Автор: ViGOur 28.10.2008, 16:35

Цитата(Litkevich Yuriy @ 28.10.2008, 16:30) *
QRegExp("PATH")
Если быть точней, то так:
    QString   value;   
    QStringList list;
    ...
    foreach (QString str, list)
    {
        if (str.isEmpty())
            continue;
        if (str.contains ( QRegExp ( "path=", Qt::CaseInsensitive))
        {
            value = str;
            break;
        }
    }

Автор: Litkevich Yuriy 28.10.2008, 16:44

ViGOur, табе зачет, мине-нет :(

Автор: ViGOur 28.10.2008, 16:46

Цитата(Litkevich Yuriy @ 28.10.2008, 16:44) *
ViGOur, табе зачет, мине-нет :(
Да брось ты, ошибся только в continue, а остальное только для наверняка... :)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)