![]() |
#1 |
Участник
|
![]()
Любопытный баг
Если объявить set set = New Set(Types::Record); а потом что нибудь туда положить и попробовать перебрать значения итератором, то в отладчике видно, что нужные значения лежат, но при извлечении мы получаем common у которого потеряны все поля кроме системных и тип буфера - UNKNOWN, хотя tableId заполнен корректно. Соответственно сделать с извлекаемым значением ничего нельзя - ошибка времени выполнения. Придется юзать Map :-( Ax 3.0 SP3 |
|
![]() |
#2 |
Участник
|
Кто-нить знает как поправить опечатки в названии темы ?
Нужно было "Класс Set некорректно сохраняет xRecord " |
|
![]() |
#3 |
Участник
|
все норм положилося и взялося....
X++: static void Job60(Args _args) { Set s = new Set(Types::Record); int i; inventTable it; SetEnumerator se; ; while select it { i++; if(i==10) break; s.add(it); } it.clear(); se= s.getEnumerator(); while(se.moveNext()) { it = se.current(); } } Последний раз редактировалось Jony; 28.02.2007 в 11:41. |
|
|
За это сообщение автора поблагодарили: IvanS (1). |
![]() |
#4 |
Участник
|
Я использовал SetIterator
Глюк вылез для него. |
|
![]() |
#5 |
Участник
|
Ха!, действительно, с итератором не фурычит, странно., юзайте SetEnumerator
ПС: итераторы не использую, так как енумераторы по душе больше ![]() Последний раз редактировалось Jony; 28.02.2007 в 11:55. Причина: ПС |
|
![]() |
#6 |
Участник
|
Цитата:
Для итераторов всегда забываешь в конце цикла вызвать Next() Для енумераторов это не нужно. |
|
![]() |
#7 |
Developer
|
А еще созданные на клиенте иттераторы не работают для созданных на сервере мэпов... (возможно и для сэтов - не проверял)
Енумератор - как-то надежнее ![]() |
|
![]() |
#8 |
Участник
|
Цитата:
Class: MapIterator extends Object Remarks MapIterators and the maps over which they iterate must be on the same Client/Server side. Class: SetIterator extends Object аналогично... |
|
![]() |
#9 |
Участник
|
В четвертой Аксапте итераторы оставлены исключительно для совместимости. Не используйте их в новом коде.
|
|
Теги |
ax3.0 |
|
|