Название: Аргументы в приложении Qt Отправлено: Nelkor от Сентябрь 27, 2014, 19:34 Задача такая - программа должна читать некий файл формата *.baw и производить какие-то свои действия.
Есть класс - bawReader и публичный метод open(QString), который открывает файл по его имени. Программа работает. И вот, лежит у меня в папке файл, например file.baw, жму я на него правой кнопкой и выбираю "Открыть с помощью BawReader". Этим действием программа BawReader вызывается с аргументом, содержащим имя файла, который требуется открыть. Собственно, цель - извлечь этот самый аргумент и передать его в функцию open. И у меня ДАЖЕ есть код, который работает. Вот он: (осторожно, индусский код) Код: #include "bawreader.h" Первое - QtCreator ругается на "for (int j = 0; j < sizeof(argv); j++)", говорит, что D:\Qt\BawReader\main.cpp:12: предупреждение: comparison between signed and unsigned integer expressions [-Wsign-compare] Второе - код ужасно индусский, однако прекрасно работает. Вот посоветуйте, не трогать его (пусть работает), или делать по-нормальному (тогда подскажите, как)? Название: Re: Аргументы в приложении Qt Отправлено: Nidxogg от Сентябрь 27, 2014, 19:48 QStringList QCoreApplication::arguments () [static]
Название: Re: Аргументы в приложении Qt Отправлено: Igors от Сентябрь 27, 2014, 19:52 char *argv[] - это то же самое что и char **, т.е. указатель, и его sizeof = 4( 8 ). И чего Вы туда полезли если есть argc (число аргументов) а еще лучше QStringList QCoreApplication::arguments
И не contains a endsWith. Букварь-то читать надо, а не фигню молотить Название: Re: Аргументы в приложении Qt Отправлено: vitfil от Сентябрь 27, 2014, 19:54 1. argc - это количество переданных аргументов.
2. Первый аргумент есть всегда - это имя исполняемого файла Исходя из этого, если аргументов 2, то было ваше "Открыть с помощью..." Значит, можно просто передать второй аргумент: w.open(argv[1]); Название: Re: Аргументы в приложении Qt Отправлено: Nelkor от Сентябрь 27, 2014, 19:58 Спасибо, всё получилось! Когда-нибудь я перестану быть индусом благодаря вам!)
|