Go Down

Topic: Mechendo com String (Read 1 time) 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy