Russian Qt Forum

Qt => Вопросы новичков => Тема начата: tw333k от Июль 18, 2011, 13:54



Название: Программа запускается с параметрами
Отправлено: tw333k от Июль 18, 2011, 13:54
Программа запускается с параметрами, но параметры приходят в неизвестном заранее порядке. Как наиболее удобнее их вытащить оттуда?

Допустим мне нужно два параметре


QString lenght, lenght2;

А программу могут запустить из коммандной строки как  programmname.exe len1=4324 len2=4342 так и наоборот.


Название: Re: Программа запускается с параметрами
Отправлено: Fess от Июль 18, 2011, 13:56
Посмотрите вот это:
http://qt-apps.org/content/show.php/QCommandLine?content=135068


Название: Re: Программа запускается с параметрами
Отправлено: SASA от Июль 18, 2011, 15:46
Код:
CApp a(argc, argv);
QStringList argList = a.arguments();
for (int cou = 1; cou < argList.size(); cou++) // разбор коммандной строки
{
// разбор параметров
if (argList[cou].startsWith("param1="))
{
param1 = argList[cou].right(argList[cou].length() - QString("param1=").length());
} else
if (argList[cou].startsWith("param2="))
{
param2 = argList[cou].right(argList[cou].length() - QString("param2=").length());;
}
}


Название: Re: Программа запускается с параметрами
Отправлено: Firefox от Июль 25, 2011, 22:00
ну я делала с помощью argv[] параметра. при запуске programm.exe par1 par2 читаю argv массив первый параметр в первый элемент. второй во второй и т.д.


Название: Re: Программа запускается с параметрами
Отправлено: SASA от Июль 26, 2011, 12:15
ну я делала с помощью argv[]
C QStringList работать удобнее,чем с сишными массивами.


Название: Re: Программа запускается с параметрами
Отправлено: Rem Norton от Сентябрь 14, 2011, 23:46
Если параматры заданны в виде "<param>=<value>", то можно сделать так:
Код
C++ (Qt)
QMap<QString,QVariant> args;
...
...
   if (argc > 1)
   {
       for (int i = 1; i < argc; i++)
       {
           QStringList pr = QString(argv[i]).toUpper().split('=');
           if (pr.count() ==2)
           {
               args[pr[0]] = pr[1];
           }
       }
   }
 

Ну и потом вытаскивать параметры вот так:

Код
C++ (Qt)
int len1 = args["LEN1"].toInt();
int len2 = args["LEN2"].toInt();
 

Ну вот как-то так...