Mehrere Versuche für Passwortprüfung bei ButtonClick (war: Sehr sehr komischer Fehler??)
-
Hi,
hab hier mal ne PW Abfrage programmiert und die läuft.
ABER er sagt mir bei der 1. Falscheingabe schon gesperrt, was er eigentlich erst bei der 3. sagen sollte.
Hier mal der Code. Was soll da falsch sein?
void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString pw="affe"; int Versuche=0; Versuche=0; while(Versuche<=3) { if(pw==Edit1->Text) { Label1->Caption="RICHTIG"; } else if(pw!=Edit1->Text) { Label1->Caption="FALSCH"; Versuche++; } } ShowMessage("gesperrt"); }[edit="junix"]Bitte sinnvolle Überschriften wählen. Danke.[/edit]
-
Naja Du gibst dem Benutzer ja keine Zeit, seine Fehleingabe zu korrigieren sondern überprüfst beim ersten Buttonklick dreimal hintereinander den Inhalt vom Editfeld

Du müsstest die Variable Versuche in die Klasse packen und dann bei jedem Eintritt in die Button-Click Methode um eins erhöhen. Nach dem dritten Mal würde ich das Fenster dann schließen.
BTW: Builder-Subforum.
-
Bor ne ist das ein dummer Fehler

Moment und wie mache ich das? Bin grad sehr verwirrt ^^
-
Hallo
du must die Anzahl der Versuche in einer Membervariablen des Forms verwalten, nicht lokal.
Und dann pro Button-Event nicht jedesmal drei mal überprüfen, sondern nur einmal, aber dafür die Membervariable hochzählen.bis bald
akari
-
Wie heißt denn der Befehl, dass der Button gedrückt worden ist?
Button1==true?
oder Button1Click==true?
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo
einen solchen "Befehl" gibt es nicht. Und du brauchst ihn auch nicht.
bis bald
akari
-
Ok dann sagt mir bitte wie es richtig geht pls
-
Hallo
Im Header des Forms
... private : int m_Versuche; // Neue Membervariable einfügen public : ...In der Implentationsdatei des Forms
void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString pw="affe"; if(pw==Edit1->Text) { Label1->Caption="RICHTIG"; } else if(pw!=Edit1->Text) { Label1->Caption="FALSCH"; m_Versuche++; } if (m_Versuche >= 3) { ShowMessage("gesperrt"); Application->Terminate(); } }Ich empfehle dir aber dringenst, dich erstmal mit den Grundlagen der OOP zu beschäftigen, bevor du mit GUI rumpfuscht.
bis bald
akari
-
Ebenfalls empfehlenswert ist das Erlernen des Umgangs mit dem Debugger
-
Jo werd ich auch in der Schule machen. Hatte vorher ned gedacht, dass es wirklich so schwierig wird ^^
Warum Debugger? Hab mit dem Debugger gesehen, dass er Versuch auf 4 stellt aber wusste ned warum.
-
Hallo
richtig eingesetzt (Breakpoint auf erste Zeile der Methode, F8 ...) erkennst du auch wie er zu diesem Wert kommt. Weil dann jede Codezeile Schritt für Schritt durchgegangen werdten kann.
bis bald
akari