Passwortabfrage



  • hallo,
    ich hab folgenden Code der auf den ersten Blick auch geht:

    void __fastcall TFpassword::Bpw_okClick(TObject *Sender)
    {
    char pw[] = "test";
    char * passwort = Epassword->Text.c_str();
    if (strcmp(passwort, pw) == 0) {
            Fpassword->Close();
            Foptions->ShowModal(); }
    else {
    ShowMessage("Wrong passsword, please try again."); }
    Epassword->SetFocus();
    Epassword->Text = "";
    passwort = Epassword->Text.c_str();
    }
    

    Beim erstmaligen eingeben erkennt der code ob das Passwort richtig oder falsch ist. Geb ich aber zuerst ein falsches Passwort ein und danach das richtige, wird es trotzdem nicht mehr als richtig erkannt.
    Vielleicht sieht einer ja weshalb das so ist.



  • Hallo,

    Kannst du mir verraten, warum du hier dieses char* strcmp-Gewurschtel machst? AnsiStrings kann man ganz normal vergleichen. Deine Einrückungen machen den Code auch nicht gerade lesbarer.
    versuchs mal so

    void __fastcall TFpassword::Bpw_okClick(TObject *Sender)
    {
      AnsiString test = "test";
      if (Epassword->Text == test) 
      {
         Fpassword->Close();
         Foptions->ShowModal(); 
      } else 
      {
         ShowMessage("Wrong passsword, please try again."); 
      }
      Epassword->Text = "";
      Epassword->SetFocus();
    }
    

Anmelden zum Antworten