Go Down

Topic: Mechendo com String (Read 788 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. :)
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Go Up