Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > мистика RMS на эмуле Motorola A910/A910i


Автор: Выхухоль 6.8.2009, 15:38
Не пойму никак в чем проблема...(руки вроди ровные) При вызове enumerateRecords происходит фигня...((
Код

public Purses() {
        try {
            Pursec = RecordStore.openRecordStore(Constants.PursesStoreName, true);
            int  f = Pursec.getNumRecords();
            r_enum = Pursec.enumerateRecords(null, null, true); //Вот сдесь вылетает exception
            CurentPurses = null;
            LoadPurses();
        } catch (RecordStoreException ex) {
            ex.printStackTrace();
        } 
    }


java.lang.ArrayIndexOutOfBoundsException: 6
        at javax.microedition.rms.RecordStore.getRecordIDs(Unknown Source)
        at javax.microedition.rms.RecordEnumerationImpl.rebuild(Unknown Source)
        at javax.microedition.rms.RecordEnumerationImpl.keepUpdated(Unknown Source)
        at javax.microedition.rms.RecordEnumerationImpl.<init>(Unknown Source)
        at javax.microedition.rms.RecordStore.enumerateRecords(Unknown Source)
        at Payment.Objects.Purses.<init>(Purses.java:28)
       //строка вырезано цензурой
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance0(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        at com.sun.midp.midlet.MIDletState.createMIDlet(Unknown Source)
        at com.sun.midp.midlet.Selector.run(Unknown Source)
Unable to create MIDlet
        at java.lang.Thread.run(Unknown Source)

Автор: Bchgroup 7.8.2009, 10:07
Код

     r_enum = Pursec.enumerateRecords(null, null, true); //Вот сдесь вылетает exception

что вы этой строчкой добиться хотите?

Автор: Выхухоль 7.8.2009, 13:47
мы этой строчкой берем enum  записей в rms.. а потом работаем с ним то бишь, считываем инфу, обновляем, записываем новую...

Автор: Bchgroup 7.8.2009, 14:17
Надо вот так.
Код

recordEnumeration = recordstore.enumerateRecords(null, null, false);



А вообще это нужно для фильтрации большей частью. Почему просто в цикле for не вытаскивать записи по номеру? getRecord

Автор: Выхухоль 7.8.2009, 14:35
Цитата(Bchgroup @  7.8.2009,  14:17 Найти цитируемый пост)
Надо вот так.
Выделить всёкод Java
1:
    
recordEnumeration = recordstore.enumerateRecords(null, null, false);

неее... так явно не надо..
если я ставлю там false...то RMS мне может вернуть и удаленные записи и всякую другую муть, которая мне не нужна..



Цитата(Bchgroup @  7.8.2009,  14:17 Найти цитируемый пост)
Почему просто в цикле for не вытаскивать записи по номеру? getRecord 

а потому что так епатни больше....сначала нужна взять номер, потом нужно вставить номер в getRecord...а так я просто делаю 
Код

recordEnumeration.nextRecord() 

и не парюсь...

Автор: Bchgroup 7.8.2009, 16:11
Цитата(Выхухоль @ 7.8.2009,  14:35)


Цитата
если я ставлю там false...то RMS мне может вернуть и удаленные записи и всякую другую муть, которая мне не 


Согласно JavaDocs, этот параметр обозначает KeepUpdated, т.е. 
поддерживает выборку в актуальном состоянии. На предмет изменений. К удаленным записям и мути это отношений не имеет. А вот по производительности может быть удар.

Цитата

а потому что так епатни больше....сначала нужна взять номер, потом нужно вставить номер в getRecord...а так я просто делаю 


Код

myStore.getRecord(myStore.getNextRecordID());


Где "епатня"?  smile 

Автор: Выхухоль 3.9.2009, 16:58
Цитата(Bchgroup @  7.8.2009,  16:11 Найти цитируемый пост)
Согласно JavaDocs, этот параметр обозначает KeepUpdated, т.е. 
поддерживает выборку в актуальном состоянии. На предмет изменений. К удаленным записям и мути это отношений не имеет. А вот по производительности может быть удар.

так вот как раз в JavaDocs, и написано что если значение параметра KeepUpdated равно false, то он возвращает обсолютно все записи, без изменений с момента инициализации RMS, ну так я их извените за выражените в процессе работы то изменяю...



Цитата(Bchgroup @  7.8.2009,  16:11 Найти цитируемый пост)
Где "епатня"?  smile 

сейчас она заключается в том что вы не в ту сторону мне лпытаетесь мозг вправить =)

Автор: Dancer 21.9.2009, 18:57
а чему равны Pursec и f?

r_enum = null;
if(Pursec !=null && f >0) {
    r_enum = Pursec.enumerateRecords(null, null, true); //Вот сдесь вылетает exception
}
...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)