Como corrigir o erro!

Boa tarde, galera!

tenho uma aplicação de cadastro de clientes e quando faço cadastro tudo ocorre bem, mas quando quero listar apresenta erro, me ajudem a corrigir esse erro.
grato.

package principal;

import conexao.GetPostRegistros;
import javax.microedition.midlet.*;  
import javax.microedition.lcdui.*;  

import java.util.Vector;
import javax.microedition.rms.*;

import rms.RmsVenda;

public class VendaRemota extends MIDlet implements CommandListener, Runnable {  
   	private Display display;  
   	private List telaInicial, telaClientes, telaProdutos, telaPedidos;
   	private Alert alerta;
   	private Command sair, sobre, voltar, salvar, novo, apagar;  
   	private Form adicionarCliente, adicionarProduto, adicionarPedido, telaInformacoes;
   	private TextField tfCliente,tfEndereco,tfTelefone,tfSenha,tfLogin,tfEmail,tfCodigo, tfProduto, tfQuantidade,tfTam, tfPreco;
   	private Vector vecClientes, vecProdutos, vecPedidos = null;
   	boolean deletedFlags[] = null;
   	private ChoiceGroup clientesCG, produtosCG;
   	boolean gravacaoOK = false; 
   
	//RMS   
   	private RmsVenda rmsPedidos, rmsClientes, rmsProdutos;
   	private RecordStore RSPedidos, RSClientes, RSProdutos;
   	private String BDClientes = "BancoClientes";
   	private String BDPedidos = "BancoPedidos";
   	private String BDProdutos = "BancoProdutos";

	//Conexao com Servlet
   	private GetPostRegistros  conClientes;
  	private Thread t = null;
	
   	public VendaRemota(){  
       		display  = Display.getDisplay(this);  
       		sair = new Command("Sair", Command.EXIT, 0);
       		voltar = new Command ("Voltar", Command.BACK, 0);
       		salvar = new Command( "Salvar", Command.OK, 1);
       		apagar = new Command("Apagar", Command.OK, 1);
	   	novo = new Command("Novo", Command.OK, 1);
	   	sobre = new Command ("Sobre", Command.HELP,1);
	   
       		telaInicial = new List( "Pizzaria Pegaleve - Seja bem-vindo", Choice.IMPLICIT );
       		telaInicial.append("Clientes",null);
       		telaInicial.append("Produtos",null);
       		telaInicial.append("Pedidos",null);  
       		telaInicial.append("Transmitir dados",null);
       		telaInicial.append("Zerar Registros",null);
       		telaInicial.append("Estatísticas",null);
       		telaInicial.addCommand(sair);
       		telaInicial.addCommand(sobre);  
       		telaInicial.setCommandListener(this);       
          
       		telaClientes = new List("Cadastro de Clientes", Choice.MULTIPLE);        
       		telaClientes.addCommand(voltar);  
       		telaClientes.addCommand(novo);
       		telaClientes.addCommand(apagar);
       		telaClientes.setCommandListener(this);

       		telaProdutos = new List("Cadastro de Produtos", Choice.MULTIPLE);        
       		telaProdutos.addCommand(voltar);  
       		telaProdutos.addCommand(novo);
       		telaProdutos.addCommand(apagar);
       		telaProdutos.setCommandListener(this);

       		telaPedidos = new List("Cadastro de Pedidos", Choice.MULTIPLE);        
       		telaPedidos.addCommand(voltar);
       		telaPedidos.addCommand(novo);
       		telaPedidos.addCommand(apagar);
       		telaPedidos.setCommandListener(this);

       		adicionarCliente = new Form ("Adicione novo cliente");
       		tfCliente = new TextField ("Nome do Cliente","",20, TextField.ANY);
      		 adicionarCliente.append(tfCliente);
      		tfEndereco = new TextField ("Endereço","",20, TextField.ANY);
      		 adicionarCliente.append(tfEndereco);
      		tfTelefone = new TextField ("Telefone:","",9, TextField.ANY);
     		 adicionarCliente.append(tfTelefone);
     		tfSenha = new TextField ("Senha:","",16, TextField.PASSWORD);
     		 adicionarCliente.append(tfSenha);
     		tfLogin = new TextField ("Login:","",16, TextField.ANY);
    		 adicionarCliente.append(tfLogin);
    		tfEmail = new TextField ("E-mail:","",20, TextField.ANY);
    		 adicionarCliente.append(tfEmail);
       		adicionarCliente.addCommand(salvar);
       		adicionarCliente.addCommand(voltar);
       		adicionarCliente.setCommandListener(this);

       		adicionarProduto = new Form ("Adicione novo produto");
       		tfCodigo = new TextField ("Código:","",7, TextField.ANY);
       		tfProduto = new TextField ("Descrição","",20, TextField.ANY);
       		tfTam = new TextField ("Tamanho","",10, TextField.ANY);
       		tfPreco = new TextField ("Preco Unitario:","",7, TextField.ANY);
       		adicionarProduto.append(tfCodigo);
       		adicionarProduto.append(tfProduto);
       		adicionarProduto.append(tfTam);
       		adicionarProduto.append(tfPreco);
       		adicionarProduto.addCommand(salvar);
       		adicionarProduto.addCommand(voltar);
      		 adicionarProduto.setCommandListener(this);
       
      		adicionarPedido = new Form ("Adicione novo pedido");
      		String[] strings = new String[] { "" };
      		clientesCG = new ChoiceGroup("Clientes cadastrados", ChoiceGroup.POPUP, strings, null);
       		produtosCG = new ChoiceGroup("Produtos cadastrados", ChoiceGroup.POPUP, strings, null);
       		tfQuantidade = new TextField("Quantidade","",3, TextField.NUMERIC);
       		adicionarPedido.append(clientesCG);
       		adicionarPedido.append(produtosCG);
       		adicionarPedido.append(tfQuantidade);
       		adicionarPedido.addCommand(salvar);
       		adicionarPedido.addCommand(voltar);
       		adicionarPedido.setCommandListener(this);
       
	   	rmsPedidos = new RmsVenda();
	   	rmsClientes = new RmsVenda();
	   	rmsProdutos = new RmsVenda();
	   	telaInformacoes = new Form ("Estatísticas do sistema");
	   	telaInformacoes.addCommand(voltar);
	   	telaInformacoes.setCommandListener(this);
   	}  

   	public void startApp() {  
		display.setCurrent(telaInicial);
	   	RSPedidos  = rmsPedidos.abrirRecordStore(BDPedidos);
	   	RSClientes = rmsClientes.abrirRecordStore(BDClientes);
	   	RSProdutos = rmsProdutos.abrirRecordStore(BDProdutos);
	   	vecClientes = rmsClientes.listarRegistros(RSClientes);
	   	vecProdutos = rmsProdutos.listarRegistros(RSProdutos);
	   	vecPedidos  = rmsPedidos.listarRegistros(RSPedidos);
   	}  

   	public void gerenciarClientes(){
		vecClientes = rmsClientes.listarRegistros(RSClientes);
	   	gerarTela(vecClientes, telaClientes);
	   	display.setCurrent(telaClientes);
   	}

   	public void gerenciarProdutos(){
		vecProdutos = rmsProdutos.listarRegistros(RSProdutos);
	   	gerarTela(vecProdutos, telaProdutos);
	   	display.setCurrent(telaProdutos);
   	}

   	public void gerenciarPedidos(){
	    	vecPedidos  = rmsPedidos.listarRegistros(RSPedidos);
	    	gerarTela(vecPedidos, telaPedidos);
	    	display.setCurrent(telaPedidos);
   	}

   	private void gerarTela(Vector vecNomes, List tela){
		tela.deleteAll();
		for (int i = 0; i < vecNomes.size(); i++) {
			if (tela.getTitle()=="Cadastro de Clientes"){
				Clientes item = (Clientes)vecNomes.elementAt(i);
				String nome = item.getNome();
				tela.append(nome, null);
			}else if (tela.getTitle()=="Cadastro de Produtos"){
				Produtos item = (Produtos)vecNomes.elementAt(i);
				String nome = item.getNome();
				float preco = item.getPreco();
				tela.append(nome+" R$"+preco, null);
			}else{
				Pedidos item = (Pedidos)vecNomes.elementAt(i);
				String cliente = item.getCliente();
				String produto = item.getProduto();
				int quantidade = item.getQuantidade();
				tela.append(cliente+" "+produto+" "+quantidade, null);
			}
		}
		testarComandoApagar(tela);
		display.setCurrent(tela);	
	}

   	private void testarComandoApagar(List tela){
	   	if ((tela.getString(0)).regionMatches(true, 8, "não cadastrados", 0, 15)){
			Ticker ticker = new Ticker ("Nenhum registro encontrado neste cadastro");
		   	tela.setTicker(ticker);
		   	tela.removeCommand(apagar);
	   	}else if ((tela.getString(0)).regionMatches(true, 9, "não cadastrados", 0, 15)){
			Ticker ticker = new Ticker ("Nenhum registro encontrado neste cadastro");
			tela.setTicker(ticker);
			tela.removeCommand(apagar);
	  	}else{
			tela.addCommand(apagar);
			tela.setTicker(null);
		}
  	}
  
	private void testarComandoSalvar(Displayable d){
		if (d == adicionarCliente){
			if (tfCliente.size() != 0){
				gravacaoOK = true;
		   	}
	   	}else if (d == adicionarProduto){
			if ((tfProduto.size() != 0) && (tfPreco.size() != 0)){
				gravacaoOK = true;
		   	}
	   	}else if (d == adicionarPedido){
			if ((clientesCG.getString(0)== "Clientes não cadastrados") || ((produtosCG.getString(0))=="Produtos não cadastrados") || (tfQuantidade.size()==0)) {
			   	gravacaoOK = false;
		   	}else
				gravacaoOK=true;
   		}
   	}

   	public void pauseApp() { }  
      
   	public void destroyApp(boolean unconditional) {
		rmsPedidos.closeRecordStore(RSPedidos);
	   	rmsClientes.closeRecordStore(RSClientes);
	   	rmsProdutos.closeRecordStore(RSProdutos);
	   	notifyDestroyed();
   	}     

   	private void zerarRegistros(){
	 	 rmsClientes.zerarRegistros(RSClientes, "BancoClientes");
	 	 rmsProdutos.zerarRegistros(RSProdutos, "BancoProdutos");
	 	 rmsPedidos.zerarRegistros(RSPedidos, "BancoPedidos");
		 RSPedidos  = rmsPedidos.abrirRecordStore(BDPedidos);
		 RSClientes = rmsClientes.abrirRecordStore(BDClientes);
		 RSProdutos = rmsProdutos.abrirRecordStore(BDProdutos);
		 vecProdutos.removeAllElements();
		 vecClientes.removeAllElements();
		 vecPedidos.removeAllElements();
		 vecClientes = rmsClientes.listarRegistros(RSClientes);
		 vecProdutos = rmsProdutos.listarRegistros(RSProdutos);
		 vecPedidos  = rmsPedidos.listarRegistros(RSPedidos);
		 mostrarAlerta("Registros zerados", "Bancos de dados apagados");
	  	 display.setCurrent(alerta, telaInicial);
   	}

   	private void mostrarInformacoes(RecordStore rs){
		try{
			String nomeRs = rs.getName();
			String numero = Integer.toString(rs.getNumRecords());
			String tamanho = Integer.toString(rs.getSize());
  		    	String disponivel = Integer.toString(rs.getSizeAvailable());
			StringItem nomeSI = new StringItem ("Nome do RecordStore", nomeRs);
			StringItem tamanhoOc = new StringItem ("Tamanho ocupado (em bytes)", tamanho.toString());
			StringItem numeroReg = new StringItem ("Número de registros existentes", numero);
		    	StringItem tamanhoDis = new StringItem ("Tamanho disponível (em bytes)", disponivel);
			telaInformacoes.append(nomeSI);
			telaInformacoes.append(tamanhoOc);
			telaInformacoes.append(numeroReg);
			telaInformacoes.append(tamanhoDis);
		}
		catch (Exception exc) {}
	}

   	private void mostrarAlerta(String tipoAlerta, String msg){
		alerta = new Alert(tipoAlerta, msg, null, AlertType.WARNING); 
	      	alerta.setTimeout(Alert.FOREVER); 
	}

   	public void commandAction(Command c, Displayable d){  
        	if (c == List.SELECT_COMMAND){
        		String selection = telaInicial.getString(telaInicial.getSelectedIndex());
        	 	if (selection == "Clientes"){ 
        		 	gerenciarClientes();
        	 	}else if(selection == "Produtos"){
        			gerenciarProdutos();
        	 	}else if(selection == "Pedidos"){
        			gerenciarPedidos();
        	 	}else if(selection == "Zerar Registros"){
        			zerarRegistros();	    		 
        	 	}else if(selection == "Estatísticas"){
        			mostrarInformacoes(RSClientes);	    		 
        		 	mostrarInformacoes(RSProdutos);
        		 	mostrarInformacoes(RSPedidos);
     			 	display.setCurrent(telaInformacoes);
        	 	}else if (selection == "Transmitir dados"){
        			connectThreadClientes(); 
        	 	}
         	} else if (c==sair) {
               		destroyApp(true);    
            	}else if (c == sobre) {    
            		String m1 = ("Trabalho de Lab. de Engenharia de Software\n");
               		String m2 = ("Prof. Alexandre Heleno\n");
               		String m3 = ("Alunos:\n");
               		String m4 = ("Danielle Gomes\n");
               		String m5 = ("Hugo Gomes\n");
               		String m6 = ("Gustavo Henrique\n");
               		String m7 = ("Ramon Ferreira");
            		mostrarAlerta("Sobre",m1+m2+m3+m4+m5+m6+m7);
            		display.setCurrent(alerta,  telaInicial);
            	}else if (c==novo){
            		if (d == telaClientes){
            			tfCliente.setString("");
            			display.setCurrent(adicionarCliente);
            		}else if (d == telaProdutos){
           			tfProduto.setString("");
          			tfPreco.setString("");
          			display.setCurrent(adicionarProduto);
            		}else if (d == telaPedidos){
           			tfQuantidade.setString("");
           			clientesCG.deleteAll();
           			produtosCG.deleteAll();
           			for (int i = 0; i < vecClientes.size(); i++) {
        				Clientes item = (Clientes)vecClientes.elementAt(i);
        				String nome = item.getNome();
        				clientesCG.append(nome, null);
           			}
           			for (int i = 0; i < vecProdutos.size(); i++) {
           				Produtos item = (Produtos)vecProdutos.elementAt(i);
           				String nome = item.getNome();
           				produtosCG.append(nome, null);
          			}
           			display.setCurrent(adicionarPedido);
            		}
            	}else if (c==salvar) {
       			testarComandoSalvar(display.getCurrent());
            		if (gravacaoOK == false){
        			mostrarAlerta("Aviso", "Registro vazio não será salvo\n"+"Tente novamente");
        		   	display.setCurrent(alerta, display.getCurrent());
            		}else {
        			if (d == adicionarCliente){
               				rmsClientes.adicionarRegistroClientes(RSClientes, tfCliente.getString());
               		    		vecClientes = rmsClientes.listarRegistros(RSClientes);
               		    		tfCliente.setString("");
        		   	}else if (d == adicionarProduto){
        				rmsProdutos.adicionarRegistroProdutos(RSProdutos, tfProduto.getString(), Float.parseFloat(tfPreco.getString()));
               		    		vecProdutos  = rmsProdutos.listarRegistros(RSProdutos);
               		    		tfProduto.setString("");
                			tfPreco.setString("");
        		   	}else if (d == adicionarPedido){
        				rmsPedidos.adicionarRegistroPedido(RSPedidos, clientesCG.getString(clientesCG.getSelectedIndex()), produtosCG.getString(produtosCG.getSelectedIndex()), Integer.parseInt(tfQuantidade.getString()));
        			   	vecPedidos  = rmsPedidos.listarRegistros(RSPedidos);
               		   	tfQuantidade.setString("");
        		   	}
        		   	gravacaoOK=false;
            	   	display.setCurrent(telaInicial);
        	   	}         	   
             	}else if (c==apagar){
            	 	if (d == telaClientes){
            			deletedFlags = new boolean[telaClientes.size()];
            			telaClientes.getSelectedFlags(deletedFlags);
               			rmsClientes.apagarRegistros(RSClientes, vecClientes, deletedFlags);
           		    	vecClientes = rmsClientes.listarRegistros(RSClientes);               			
            		}else if (d == telaProdutos){
            			deletedFlags = new boolean[telaProdutos.size()];
            			telaProdutos.getSelectedFlags(deletedFlags);
               			rmsProdutos.apagarRegistros(RSProdutos, vecProdutos, deletedFlags);
           		    	vecProdutos  = rmsProdutos.listarRegistros(RSProdutos);
            		}else if (d == telaPedidos){
            			deletedFlags = new boolean[telaPedidos.size()];
            			telaPedidos.getSelectedFlags(deletedFlags);
               			rmsPedidos.apagarRegistros(RSPedidos, vecPedidos, deletedFlags);
   	         	    	vecPedidos  = rmsPedidos.listarRegistros(RSPedidos);
            		}
           		display.setCurrent(telaInicial);
             	}else if (c==voltar){
           		if (d == adicionarPedido){
           			display.setCurrent(telaPedidos);
           		}else{
           			display.setCurrent(telaInicial);
           		}
        	}	
    	}
      
   	private void connectThreadClientes(){
	 	t = new Thread(this);
	     	t.start();
   	}

	public void run(){
		try{
			conectarEnviarPedidos();
		}catch (Exception e){}
	}

	private void conectarEnviarPedidos(){
  		String url_servidor ="http://localhost:8080/VendaRemotaServlet/RecebePedidos"; 
  		conClientes = new GetPostRegistros(url_servidor);
  		String mensagem;
  		try{
  			mensagem = conClientes.enviarRegistros(vecPedidos);
  			if (mensagem == null){
  				mensagem = "Erro de comunicação com o servlet";
  			}
  			mostrarAlerta("Resposta do Servlet", mensagem);
  		    	display.setCurrent(alerta, telaInicial);
  		}catch (Exception e){}
  		display.setCurrent(telaInicial);
  	}
}

erro:
Running with storage root C:\Users\Ferreira\j2mewtk\2.5.2\appdb\temp.DefaultColorPhone78
Running with locale: Portuguese_Brazil.1252
Running in the identified_third_party security domain
java.lang.IndexOutOfBoundsException
at javax.microedition.lcdui.ChoiceGroup.checkIndex(+19)
at javax.microedition.lcdui.ChoiceGroup.getString(+11)
at javax.microedition.lcdui.List.getString(+8)
at principal.VendaRemota.testarComandoApagar(+5)
at principal.VendaRemota.gerarTela(+204)
at principal.VendaRemota.gerenciarClientes(+27)
at principal.VendaRemota.commandAction(+32)
at javax.microedition.lcdui.List.callKeyPressed(+80)
at javax.microedition.lcdui.Display$DisplayAccessor.keyEvent(+198)
at javax.microedition.lcdui.Display$DisplayManagerImpl.keyEvent(+11)
at com.sun.midp.lcdui.DefaultEventHandler.keyEvent(+127)
at com.sun.midp.lcdui.AutomatedEventHandler.keyEvent(+210)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+114)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+57)

bom não testei … mas vamos lá:

um explicação bem simples é que a lista que tu tá enviando no testarComandoApagar … está vazia … uma possibilidade disso é que em gerarTela … tu remove todos os elementos no início … assim se o Vector vecNomes vier vazio … a lista que tu passa para o comando (testarComandoApagar(tela); … linha 171) vai estar conseqüentemente vazia … dando erro quando for chamar o 1 if na linha 176 ((tela.getString(0)) …

obs: nunca usei esse regionMatches … interessante :stuck_out_tongue: … o que tu queria com ele exatamente?

Norxs,
estou tentando implementar uma aplicação para Sistemas de Pizza Deliveries, mas muitas coisas me fogem, como por exemplo, fiz um bem simples com poucos campos e funcionou quando aumento deu esse problemas e tem mais, quando mando transmitir os dados, ele encontra o servlet mas não abre uma página html que recebe a lista desses dados.

como faço para lhe mandar o código completo feito em eclipse me?

grato,

Ramon

que campos tu aumenta?

tu testo debugar o que eu sugeri ali em cima?

Aumentei os campos de endereço, telefone, senha, login e e-mail.
e não debuguei pq não conheço essa opção.

vc tem msn? o meu é rjrider@hotmail.com

assim ficaria mais fácil, não acha?