Название: Сравнение строк Отправлено: vanix от Июня 08, 2011, 16:24 Вообщем строки не сравниваются хотя имеют одинаковое значение
Код: bool VEContainer::searchObject(QTreeWidgetItem *item){ Название: Re: Сравнение строк Отправлено: LisandreL от Июня 08, 2011, 16:31 1) Непечатных символов нет?
2) obj.getName() покажите Название: Re: Сравнение строк Отправлено: vanix от Июня 08, 2011, 16:38 Это абстрактный класс от которого наследуется VEWall;
header: Код: #ifndef VETYPE_H cpp: Код: #include "vetype.h" Название: Re: Сравнение строк Отправлено: vanix от Июня 08, 2011, 16:50 может имеется метод сравнения строк как, например, в java equals, хотя почитал документацию к QString и не нашел ничего подобного
Название: Re: Сравнение строк Отправлено: Авварон от Июня 08, 2011, 17:05 qDebug'ом выведите. я тут вижу как минимум косяк с тем, что вы получаете адрес локальной переменной, но на сравнение это влиять не должно. и кода маловато
Название: Re: Сравнение строк Отправлено: vanix от Июня 08, 2011, 17:09 я тут вижу как минимум косяк с тем, что вы получаете адрес локальной переменной поконкретней, пожалуйста.Название: Re: Сравнение строк Отправлено: Fat-Zer от Июня 08, 2011, 17:11 посмотрите, size() у них одинаковый или нет...
и ещё get/setName лучше передавать/получать по ссылке. Название: Re: Сравнение строк Отправлено: vanix от Июня 08, 2011, 17:21 size одинаковый
Название: Re: Сравнение строк Отправлено: Авварон от Июня 08, 2011, 17:28 &obj;
Название: Re: Сравнение строк Отправлено: vanix от Июня 08, 2011, 17:32 &obj; а так нельзя делать?Название: Re: Сравнение строк Отправлено: sendevent от Июня 08, 2011, 17:34 может имеется метод сравнения строк как, например, в java equals, хотя почитал документацию к QString и не нашел ничего подобного QString::compare (http://doc.qt.nokia.com/latest/qstring.html#compare-5) - не то?--- и вот еще: QString::localeAwareCompare (http://doc.qt.nokia.com/latest/qstring.html#localeAwareCompare) Название: Re: Сравнение строк Отправлено: vanix от Июня 08, 2011, 17:46 через compare заработало, можно закрыть тему, а можно еще поразбираться, могу предоставить необходимые исходники.
спасибо всем и в частности sendevent. :) Название: Re: Сравнение строк Отправлено: Авварон от Июня 08, 2011, 17:52 нет, не заработало. компаре возвращает 0 (фолс) если строки равны.
Название: Re: Сравнение строк Отправлено: kambala от Июня 08, 2011, 17:57 ты сохраняешь ссылку на локальную переменную, а так делать нельзя. раз у тебя массив всех возможных значений уже есть, не проще ли просто запомнить индекс искомого элемента?
хм, может я и не прав... Название: Re: Сравнение строк Отправлено: vanix от Июня 08, 2011, 18:14 ты сохраняешь ссылку на локальную переменную, а так делать нельзя. раз у тебя массив всех возможных значений уже есть, не проще ли просто запомнить индекс искомого элемента? проблемка в том что класс VEContainer содержит списки объектов разных типов в том числе vewall и vecontainer, в свою очередь объекты типа vecontainer использут ту же организацию. при поиске по имени легче вернуть и сохранить ссылку на объект чем указывать индекс и к какому конкретному списку конкретного контейнера относится индекс: что бы было понятно приведу следующую схему:хм, может я и не прав... VEContainer con1 QList<VEWall> // wall1, wall2, wall3 QList<VEContainer> // con2 //QList<VEWall> //wall4, wall5, wall6 //QList<VEContainer> //con3 // con4 ....... Проходя по всей иерархии мы в итоге возвращаем ссылку в con1 Вообщем это может быть непонятно, и возможно я не прав, так как использую qt меньше полгода и не знаю всех нюансов. Название: Re: Сравнение строк Отправлено: Авварон от Июня 08, 2011, 18:33 foreach(VEWall obj, objectWallList){
жирным выделено создание копии объекта, лежащего в списке. |