Go Down

Topic: Mechendo com String (Read 984 times) previous topic - next topic

Legius

Boa tarde pessoal, estou fazendo um programa para fechadura eletrônica, porém me deparei com o seguinte problema:

Estou utilizando um Teclado Matricial 4x4, e a senha deve conter 4 digitos, pode apagar e escrever até 4 digitos. Ao final da escrita, o programa le a senha e confere com à que há pra ver se ela é correta ou não. O problema é o seguinte, por exemplo a senha é 0000.
O cara escreve 01, e percebe o erro e quer apagar o 1, como faço pra apagar o 1 que fica armazenado na String "palavra" e deixar o 0?

Quote
void confere()  {
    if(palavra == "0000")  {
      lcd.clear();
      lcd.home();
      lcd.print("Senha Correta");
      digitalWrite(PORTA, HIGH);
      delay(10);
      digitalWrite(LVERM, LOW);
      digitalWrite(LVERD, HIGH);
      delay(50);
      digitalWrite(LVERD, LOW);
      digitalWrite(LVERM, HIGH);
      digitalWrite(PORTA, LOW);
    }
    if((palavra == "1111") || (menu = 1)) {
      menu = 0;
      lcd.clear();
      lcd.home();
      lcd.print("Menu Secreto:");
      delay(100);
      lcd.clear();
      lcd.home();
      lcd.print("1 - Mudar Senha");
      lcd.setCursor(0,1);
      lcd.print("2 - Porta Aberta Hj");
      senhasecreta = 1;
      while(senhasecreta = 1)  {
        char letecla = keypad.getKey();
        delay(10);
        if (letecla == '1')  {
          delay(2);
          lcd.home();
          lcd.clear();
          lcd.print("Senha Antiga:");
          conta = 1;
          delay(10);
          teste = 1;
          while(teste = 1)  {
            while (conta == 1)  {
              char letecla = keypad.getKey();
              delay(10);
              palavra += letecla;
              if(letecla != NO_KEY && conta == 1 && letecla != '#' && letecla != '*')  {
                  lcd.setCursor(0,1);
                  lcd.print("*");
                  conta = 2;
              }
               else if(letecla == '#')  {
                 conta = 0;
                 menu = 1;
                 return confere();
               }
              }
              while (conta == 2) {
              char letecla = keypad.getKey();
              delay(10);
              palavra += letecla;
              if(letecla != NO_KEY && conta == 2 && letecla != '#' && letecla != '*')  {
                  lcd.setCursor(1,1);
                  lcd.print("*");
                  conta = 3;
              }
               if(letecla == '#')  {
                 conta = 0;
                 menu = 1;
                 return confere();
               }
               if(letecla == '*')  {
                 palavra = ?????[/font]; //queria apagar a letra anterior escrita sem envolver a outra
                 lcd.setCursor(0,1);
                 lcd.print("  ");
                 conta = 1;
                 }
              }


Um teco do programa

bubulindo

Vê o setCharAt() e length.

Depois é só trocar o char na posição length - 1. :)
This... is a hobby.

Go Up