19.05.2008, 09:36 | #1 |
совсем зелен
|
MapIterator не инициализируется
опять я со своими глупыми вопросами...в отчете объявил переменную с типом MapIterator присваиваю значение
X++: it = new MapIterator(_mapBuff); до этого точно так же делал в одном отчете все работало..._mapBuff имеет одинаковые значения и в том отчете и в этом...что я делаю не так и куда копать подскажите... |
|
19.05.2008, 09:45 | #2 |
Участник
|
Такое бывает, как правило, в двух случаях (случай когда инициирован один итератор, а используется другой не рассматриваем):
1) в мапе нет элементов; 2) мап получен через границу клиента и сервера; Первый случай можно проверять при помощи метода map.elements, а во втором передавайте между процессами не сам мап, а на одной стороне упаковывайте, на другой создавайте из контейнера. PS: на самом деле итератор оставлен для совместимости, лучше пользовать Enumerator. |
|
19.05.2008, 09:51 | #3 |
Участник
|
Я когда вываливаются странные ошибки сразу создаю job. Чтоб исключить вариации. Рекомендую.
Не знаю мож как вариант: А сепаратор(точка с запятой) между объявлением и реализацией есть. |
|
19.05.2008, 09:53 | #4 |
совсем зелен
|
в мапе элементы есть...это факт смотрел через дебагер все там путем...
а насчет воторого случая я не понял о чем ты.., |
|
19.05.2008, 09:55 | #5 |
совсем зелен
|
есть точка с запятой...говорю в точно таком же отчете все равботает...мне нужно впринципи такой же отчет тока с небольшой модификацией сделать...я продублировал отчет но пока модификаций не делал...
|
|
19.05.2008, 10:52 | #6 |
MCTS
|
попробуйте создавать его (
X++: it = new MapIterator(_mapBuff); |
|
19.05.2008, 10:58 | #7 |
совсем зелен
|
сделал отдельный метод передал в него мар и там создавал мап итератор который и возвращал...
результат тот же самый... блин я вообще не врубаюсь что не так... |
|
19.05.2008, 11:04 | #8 |
совсем зелен
|
я в мапитератор должен передать объект типа мап заполненный...я его передаю...он заполнен...и тип соответствует...что не так...???
|
|
19.05.2008, 11:11 | #9 |
MCTS
|
я имел ввиду:
X++: MapIterator it; // вместо MapIterator it = new MapIterator(_mapBuff); ; ... _mapBuff ... it = new MapIterator(_mapBuff); ... it |
|
19.05.2008, 11:19 | #10 |
Участник
|
Например: мап создается и заполняется на сервере, а используется на клиенте. В этом случае нужно передавать не мап, а контейнер. Скажем, в метод, который использует мап делаем не так:
X++: void myMetod(Map _mapItems) { MapIterator miItems; ; miItems = new MapIterator(mapItems); while (miItems.more()) { ... miItems.next() } ... } а так: X++: void myMetod(container _contems) { MapIterator miItems; ; miItems = new MapIterator(Map::Create(contems)); ... } А вообще лучше: X++: void myMetod(Map _mapItems) { MapEnumerator meItems; ; meItems = mapItems.getEnumerator(); while (meItems.moveNext()) { ... } } |
|
|
За это сообщение автора поблагодарили: V777 (1). |
19.05.2008, 11:36 | #11 |
совсем зелен
|
Eldar9x
_mapBuff заполняется в классе...а в отчете X++: _mapBuff = rCustVendTurnoverHolder.getMapBuff();
it = new MapIterator(_mapBuff); |
|
19.05.2008, 11:37 | #12 |
совсем зелен
|
Raven Melancholic
ща осмыслю что ты написал и попробую.., |
|
19.05.2008, 11:42 | #13 |
Участник
|
|
|
19.05.2008, 11:49 | #14 |
совсем зелен
|
Raven Melancholic
сработало!!! спасиба огромное.., |
|