[J2ME] Kasowanie rekordu z RMS problem inny

0

Witam

Mam pewien problem z kasowaniem danych z RMSa, ale po kolei, najpierw jak działa "algorytm".

Użytkownik tworzy profil, wpisuje nazwę [ profilu ] oraz inne dane, wszystko to zostaje wpisane do rekordu w RMSie.
[ schemat rekordu: nazwa_profilu , marka , model , rok itd
Następnie w opcji load jest ChoiceGroup, który wypełniony jest wartościami powstałymi z wycięcia odpowiedniego pola z rekordu, jak się łatwo domyślić, jest to pierwsze pole. Profil można skasować, ale nie można zrobić już nic ponad to. Tzn. Jeżeli skasuje pierwszy rekord/ profil cały program się wykrzacza. Jeżeli skasuje drugi profil to można zrobić nowy, ale nie mogę już go załadować, gdyż dostaje error o treści:

javax.microedition.rms.InvalidRecordIDException: error finding record
        at com.sun.midp.rms.RecordStoreIndex.getRecordHeader_NoCache(), bci=86
        at com.sun.midp.rms.RecordStoreIndex.getRecordHeader(), bci=121
        at com.sun.midp.rms.RecordStoreImpl.getRecordSize(), bci=22
        at javax.microedition.rms.RecordStore.getRecordSize(), bci=9
        at Mejn.RmsToStringDumper(Mejn.java:265)
        at Mejn.profilRmsPopulator(Mejn.java:290)
        at Mejn.loader(Mejn.java:522)
        at Mejn.commandAction(Mejn.java:738)
        at javax.microedition.lcdui.Display$ChameleonTunnel.callScreenListener(), bci=46
        at com.sun.midp.chameleon.layers.SoftButtonLayer.processCommand(), bci=74
        at com.sun.midp.chameleon.layers.SoftButtonLayer.soft1(), bci=37
        at com.sun.midp.chameleon.layers.SoftButtonLayer.softPress(), bci=29
        at com.sun.midp.chameleon.layers.SoftButtonLayer.pointerInput(), bci=142
        at com.sun.midp.chameleon.CWindow.pointerInput(), bci=76
        at javax.microedition.lcdui.Display$DisplayEventConsumerImpl.handlePointerEvent(), bci=19
        at com.sun.midp.lcdui.DisplayEventListener.process(), bci=296
        at com.sun.midp.events.EventQueue.run(), bci=179
        at java.lang.Thread.run(Thread.java:619)

jakieś sugestie? Każdą sprawdzę :)

0

Pokaż kod.

0

jako, że całość kodu jest nieco rozdmuchana i nikomu się nie będzie chciało przebijać przez to, wklejam newralgiczne "momenty":

public void profilRmsPopulator(Form fr, ChoiceGroup hg) throws RecordStoreNotOpenException, RecordStoreException{
     int spacePos=0;
       System.out.println("ilosc rekordow: "+rs.getNumRecords());

       recordEnumeration =
                rs.enumerateRecords(null, null, false);
       for (int i =1; i<=rs.getNumRecords();i++){
      
       System.out.println("for loop\n");

  spacePos=RmsToStringDumper(i).indexOf(" ");
       System.out.println("spacePos: \n" +spacePos);

        hg.append(RmsToStringDumper(i).substring(0, spacePos),null);
           }
      
       fr.append(hg);

}

kod który użyna rekord po 1 spacji [ nazwa profilu ], a następnie umieszcza stringa z nazwą profilu w choicGroupie

public void profilRmsRemover() throws RecordStoreException{
 
    rs.deleteRecord(ldr.getSelectedIndex()+1);
    rs.closeRecordStore();
    
}

kasowanie profilu

public String RmsToStringDumper(int numer) throws RecordStoreException{
        byte[] temp_holder = new byte[5];
      int len;
      String st=null;
//      if(rs.getRecordSize(numer)!=){
      temp_holder = new byte[rs.getRecordSize(numer)];
        len = rs.getRecord(numer, temp_holder, 0);
        st = new String(temp_holder,0,len);

        return st;

}

konwersja rekordu na Stringi :)

0

mam pewien pomysł, czy jest jakiś sposób żeby przerobić tego fora na while (recordEnumeration.hasNextElement())? Oczywiście tak żeby dalej przycinało te stringi

public void profilRmsPopulator(Form fr, ChoiceGroup hg) throws RecordStoreNotOpenException, RecordStoreException{
     int spacePos=0;
       System.out.println("ilosc rekordow: "+rs.getNumRecords());

      
       for (int i =1; i<=rs.getNumRecords();i++){
     
       System.out.println("for loop\n");

  spacePos=RmsToStringDumper(i).indexOf(" ");
       System.out.println("spacePos: \n" +spacePos);

        hg.append(RmsToStringDumper(i).substring(0, spacePos),null);
           }
     
       fr.append(hg);

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1