Russian Qt Forum

Qt => Вопросы новичков => Тема начата: CJ1 от Июнь 21, 2012, 11:34



Название: Вопрос про const
Отправлено: CJ1 от Июнь 21, 2012, 11:34
Вобще я вот эту тупую фишку ни понимаю.
пишу
Код:
 QString s = " mysqldump.exe -u"+seting.value("LoginMySql","root").toString()+" -P"+seting.value("PortMySQL","3306").toString()+" -h"+seting.value("hostMySql").toString()+" -p"+seting.value("PassMySql").toString()+ " "+seting.value("BDMySql").toString()+ " > dump2.txt";
m_process->write(s);


Вот почему нельзя написать сюда s

это же полный бред
Функция write описана как
Код:
inline qint64 write(const QByteArray &data)

Тоесть когда мы вставляем параметр с указанием const это значит что эта функция не может менять эти параметры.
Так какого же хрена мой код дает ошибку, нет, так конечно всегда у меня было, но сейчас это уже бесит! Хочу в этом разобраться по подробнее


Название: Re: Вопрос про const
Отправлено: mutineer от Июнь 21, 2012, 11:35
Может потому, что функция хочет QByteArray, а ты ей даешь QString?


Название: Re: Вопрос про const
Отправлено: CJ1 от Июнь 21, 2012, 11:36
Не, ну можно конечно и так сделать
Код:
    QByteArray a;
    QDataStream in(&a,QIODevice::WriteOnly);
    QSettings seting("ServerBD","Net");
    in << " mysqldump.exe -u"+seting.value("LoginMySql","root").toString()+" -P"+seting.value("PortMySQL","3306").toString()+" -h"+seting.value("hostMySql").toString()+" -p"+seting.value("PassMySql").toString()+ " "+seting.value("BDMySql").toString()+ " > dump2.txt";
 m_process->write(a);

Но где логика и смысл?


Название: Re: Вопрос про const
Отправлено: mutineer от Июнь 21, 2012, 11:37
Логика в том, что функция хочет один тип, а ты ей даешь другой, что явно неправильно. У QString есть несколько методов, дающих QByteArray, пользуйся ими


Название: Re: Вопрос про const
Отправлено: CJ1 от Июнь 21, 2012, 11:38
Ошибся, эта функция описана как

Код:
inline qint64 write(const char * data)


Название: Re: Вопрос про const
Отправлено: mutineer от Июнь 21, 2012, 11:38
Ошибся, эта функция описана как

Код:
inline qint64 write(const char * data)

Тогда, блин, ей тем более нельзя давать QString!! const тут вообще не причем


Название: Re: Вопрос про const
Отправлено: CJ1 от Июнь 21, 2012, 11:43
Да.... я просто забыл блин написать s.toAnsii()

Точно! Неугледел.....

Ну всеравно... подобные случаи мне встречались........ я позже опишу