Alguém pode ajudar com um problema Java?

votos
-8

Eu tenho esse código e por algum motivo eu não posso fazê-lo funcionar?

qualquer um pode ver o problema?

Eu preciso esses dados para ser capaz de retornar todos os registros que contêm o mesmo nome que é digitado na caixa de texto mNameSearchDelete. porém há registros são retornados, que deveria estar lá.

obrigado

protected void searchForNameToDelete() {
    carryOutNameSearch(mNameSearchDelete, mListFormDelete);
}
private void carryOutNameSearch(TextBox theInputScreen, Form theOutputForm) {
   listOfIDs = new Vector();  // save IDs of records in case we want to delete
   theOutputForm.deleteAll(); // clear the form
    try {
        RecordStore rs = RecordStore.openRecordStore(EventsDatabase, true);

        // Use the inner class so that the enumeration only gives
        // us those records with a matching name.
        RecordEnumeration re = rs.enumerateRecords(new NameMatcher(theInputScreen.getString()), null, false);
        while (re.hasNextElement()) {
            int id = re.nextRecordId();
            listOfIDs.addElement(new Integer(id));
            byte [] recordBuffer = rs.getRecord(id);
            String record = new String(recordBuffer);

            // extract the name and the age from the record

            int endOfnameEvent = record.indexOf(;);
            int endOfdescEvent = record.indexOf(;, endOfnameEvent + 1);

            String name = record.substring(0, endOfnameEvent);
            String desc = record.substring(endOfnameEvent + 1, endOfdescEvent);
            theOutputForm.append(name +  description:  + desc + \n);
        }
        rs.closeRecordStore();
    }
    catch(Exception e){
       // mAlertConfirmDetailsSaved.setString(Couldn't read details);
        System.err.println(Error accessing database);
    }
    Display.setCurrent(theOutputForm);

}

  /* An inner class to allow us to select only
*  those records with a matching name.
*/
static class NameMatcher  implements RecordFilter {
    String nameToMatch;
    public NameMatcher(String nameEvent) {
        nameToMatch = nameEvent;
    }
    public boolean matches(byte[] record) {
        if (record.length < nameToMatch.length()) {
            return false;
        }
        String strRecord = new String(record);
        if (strRecord.startsWith(nameToMatch)) {
            return true;
        }
        return false;
    }
}
Publicado 20/03/2009 em 15:28
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Eu posso ver uma coisa que é errado:

if (record.length < nameToMatch.length()) {
    return false;
}

você está comparando um número de bytes com um número de caracteres.

Respondeu 20/03/2009 em 15:37
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more