![]() |
Passwortüberprüfung mit repeat / until?!
Hi @ all.
Ich hab eine Aufgabe gestellt bekommen, und ich bin irgendwie blöd genug, sie nicht lösen zu können :D . Ich soll eine Passwortüberprüfung machen. Die soll so aussehen, dass ich nur die Form habe und ein Edit-Feld darin. Sobald das PW richtig im Edit-Feld eingetragen ist, soll sich eine 2. Form öffnen, die praktisch erst das "echte" Programm ist. Nun die Einschränkungen: - es muss eine repeat / until - Schleife verwendet werden - das PW muss im OnKeyUp des Edits geprüft werden - es darf if/else verwendet werden, jedoch nicht um das PW zu verifizieren! Ich weiß nicht, wie ich mit until sowas löse, denn irgendwie bietet mir die Schleife nichts, wo ich sagen kann, was passieren kann, wenn das PW richtig ist. Ich kann nur sagen was passieren soll, wenn es falsch ist :-/ . Hoffe ihr könnt mir helfen. C ya. |
Re: Passwortüberprüfung mit repeat / until?!
Delphi-Quellcode:
im Keyup dann prüfen ob richtig = true.
repeat
richtig =false until Edit1.Text = 'Passwort' Jedenfalls vom Prinzip her. |
Re: Passwortüberprüfung mit repeat / until?!
Hi. Also es macht zwar wirklich überhaupt keinen Sinn, aber vielleicht soll der String mit einer repeat Schleife überprüft werden :gruebel: Also eine Variable hochzählen lassen und den String dann Zeichen für Zeichen mit dem jeweiligen Zeichen des echten PWs abgleichen, bis eben die Zahl in der Variablen gleich der Länge des eingegebenen Passworter ist. Eventuell vorher noch mit einer if Abfrage überprüfen, ob die Länge des Eingegebenen gleich der des echten Passwortes ist.
Man liest sich, Stanlay :hi: |
Re: Passwortüberprüfung mit repeat / until?!
Zitat:
Man liest sich, Stanlay :hi: |
Re: Passwortüberprüfung mit repeat / until?!
Delphi-Quellcode:
richtig : Boolean;
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin repeat richtig := false; Application.ProcessMessages; until Edit1.Text = 'Hallo'; richtig := true; end;
Delphi-Quellcode:
So gehts. Sry das ich jetzt alles gepostet hab...
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if Richtig = true then Form2.Show; end; |
Re: Passwortüberprüfung mit repeat / until?!
Hi.
Die Lösung ist interessant. Bewirkt das Application.ProcessMessages; ,dass sich das Programm nicht aufhängt? Hab ich noch nie verwendet. THX erstmal. Ich schau's mir gleich mal richtig an. Edit: Ich habs mal noch ein wenig gestaucht:
Delphi-Quellcode:
Sonst meckert jemand, dass das repeat im OnChange und nicht im OnKeyUp steht ^^ :D .
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState); begin repeat Application.ProcessMessages; until Edit1.Text = 'Hallo'; Form2.Show; end; C ya. |
Re: Passwortüberprüfung mit repeat / until?!
![]() |
Re: Passwortüberprüfung mit repeat / until?!
Du koenntest argumentieren das so eine Schleife eine schlechte Idee ist.
Wenn der Passworttest beim ersten falschen Buchstaben aussteigt kann man einen Passwortknacker bauen. Insgesamt ist die Aufgabe unsinnig formuliert. |
Re: Passwortüberprüfung mit repeat / until?!
Ist das mit der Form und dem Button zwingend? Weil sonst könntest du es auch über ein InputQuery lösen...
|
Re: Passwortüberprüfung mit repeat / until?!
Hi,
Zitat:
MfG Marc P.S.: Das nächste mal erst lesen. :wink: |
Re: Passwortüberprüfung mit repeat / until?!
Eine lösung womit der Problemsteller eher nicht rechnet, ein bisschen aufwendiger is, aber auch schön is (meiner meinung nach)
Delphi-Quellcode:
procedure DoNothing(Sender: TForm1);
begin end; procedure DoSomething(Sender: TForm1); begin Sender.ErstelleNeuesForm; end; procedure Form1.FormOnKeyUp(Sender: TObject, ...) type TMyProcedure = procedure(Sender: TForm1); var h: array[boolean] of TMyProcedure; begin h[false] := DoNothing; h[true] := DoSomething; repeat until true; //Verwendung von repeat-until h[Edit1.Text = 'Passwort'](self); end; |
Re: Passwortüberprüfung mit repeat / until?!
OK, das mit dem OnKeyUp hatte ich überlesen. Geb ich ja zu. :wall: Hatte nur das mit IF und Repeat-Until im Kopf. (Aber als Entschuldigung kann ich vorbringen, daß ich nich lange zum Nachdenken hatte, weil ich dringend weg mußte! ;))
Nichtsdestotrotz gibts um einiges schönere Lösungen als die verlangte. Da kräuseln sich mir schon beim Denken daran die Nackenhaare! :mrgreen: Ich täts - wie gesagt - wohl über nen InputQuery lösen. Repeat-Until im OnKeyUp... :shock: @Chimaira: :thumb: Ich denke aber trotzdem, daß der Lehrer(?) schon erwartet, daß in der Repeat-Until irgendwas geschieht! ;) |
Re: Passwortüberprüfung mit repeat / until?!
Zitat:
Ansonsten könnte man die Zuweisungen der Prozeduren an das Array in die Repeatschleife schreiben, nachdem diese ja nur einmal durchlaufen wird ;) |
Re: Passwortüberprüfung mit repeat / until?!
Ich gehe immer davon aus, daß es auch Regeln gibt, die nicht explizit dargestellt sind. Und als solche sehe ich zB eben "Blindschleifen" ;) oder ähnliches.
PS: In deinem Code müßte man allerdings in der DoNothing noch einen Dummy oder ähnliches einfügen. Die Prozedur dürfte ja ansonten eigentlich beim Compilieren ignoriert werden... |
Re: Passwortüberprüfung mit repeat / until?!
@Chimaira: huebsche Loesung, koennte von mir sein ;)
Zitat:
Delphi-Quellcode:
Die Schleife macht was (Ausfuehrung von nop), aber nop steht fuer "No Operation", also macht der Befehl nix. :zwinker:
asm
nop; end; Greetz alcaeus |
Re: Passwortüberprüfung mit repeat / until?!
Zitat:
aber AFAIK verschwinden nur leere Ereignisse: Methoden die man selbst geschrieben hat, bleiben, egal ob leer oder nicht verwenden (bei letzterem gibts evt. ne Warnung) |
Re: Passwortüberprüfung mit repeat / until?!
Ja stimmt, hast recht. Aber wars nich auch so, daß generell alle leeren Prozeduren/Funktionen gelöscht werden, die man im Form deklariert hat? Aber is ja auch wurscht, das greift in dem Code ja auch nich. Insofern: OK, alles in Ordnung, hab mich gleich nochmal geirrt! :mrgreen: Der Tag fängt ja schon gut an! :wall:
OK, genug OT von meiner Seite. Ich kenne keine sinnvolle Art, das so zu lösen, wie es verlangt wird, aber es wurden ja schon recht interessante Alternativen gepostet. |
Re: Passwortüberprüfung mit repeat / until?!
Wobei die Aufgabenstellung schon ziemlich blöd ist find ich.
"Warum einfach wenns kompliziert geht" dachte sich wohl der Aufgabengeber... :roll: |
Re: Passwortüberprüfung mit repeat / until?!
Zitat:
Ich kenn genug beispiele (eins davon: Programmiere einen Parser in C für Linux, wo jeder Term in einem Eigenen Prozess (nicht Thread) abgearbeitet wird. Term und ergebnis werden dann über Pipes übertragen, nicht über Parameter/Rückgabewert...) wird aber OT sinnlos isses auf jeden fall, zumindest vom endergebnis her. Pädagogischen Sinn könnts vielleicht einen haben |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz