Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Passwortüberprüfung mit repeat / until?! (https://www.delphipraxis.net/40701-passwortueberpruefung-mit-repeat-until.html)

HaCkAttaCk2001 19. Feb 2005 16:42


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.

Neutral General 19. Feb 2005 16:44

Re: Passwortüberprüfung mit repeat / until?!
 
Delphi-Quellcode:
repeat
richtig =false
until
Edit1.Text = 'Passwort'
im Keyup dann prüfen ob richtig = true.
Jedenfalls vom Prinzip her.

Stanlay Hanks 19. Feb 2005 16:47

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:

Stanlay Hanks 19. Feb 2005 16:49

Re: Passwortüberprüfung mit repeat / until?!
 
Zitat:

Zitat von Neutral General
Delphi-Quellcode:
repeat
richtig =false
until
Edit1.Text = 'Passwort'
im Keyup dann prüfen ob richtig = true.
Jedenfalls vom Prinzip her.

Also wenn der das macht, müsste das doch eigentlich in einer Endlosschleife enden, weil er doch gar keine Zeit hat, um etwas im Edit zu ändern.

Man liest sich, Stanlay :hi:

Neutral General 19. Feb 2005 16:50

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:
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Richtig = true then
  Form2.Show;
end;
So gehts. Sry das ich jetzt alles gepostet hab...

HaCkAttaCk2001 19. Feb 2005 16:59

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:
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  repeat
    Application.ProcessMessages;
  until Edit1.Text = 'Hallo';
  Form2.Show;
end;
Sonst meckert jemand, dass das repeat im OnChange und nicht im OnKeyUp steht ^^ :D .


C ya.

malo 19. Feb 2005 18:41

Re: Passwortüberprüfung mit repeat / until?!
 
Delphi-Referenz durchsuchenApplication.ProcessMessages unterbricht einen Vorgang (in der Regel ein Schleife) und lässt den PC alle weiteren Aktionen (Messages) verarbeiten. Sobald das geschehen ist, wird hinter dem "Application.ProcessMessages" weitergearbeitet ;)

Robert Marquardt 20. Feb 2005 06:43

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.

leddl 20. Feb 2005 07:48

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...

Chegga 20. Feb 2005 09:39

Re: Passwortüberprüfung mit repeat / until?!
 
Hi,

Zitat:

Zitat von HaCkAttaCk2001
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!

@ leddl: Das sind die Bedingungen. Daher erübrigt sich deine Frage. :roll:

MfG Marc

P.S.: Das nächste mal erst lesen. :wink:

JasonDX 20. Feb 2005 10:00

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;

leddl 20. Feb 2005 10:18

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! ;)

JasonDX 20. Feb 2005 10:26

Re: Passwortüberprüfung mit repeat / until?!
 
Zitat:

Zitat von leddl
@Chimaira:
:thumb: Ich denke aber trotzdem, daß der Lehrer(?) schon erwartet, daß in der Repeat-Until irgendwas geschieht! ;)

Vielleicht, es steht aber nicht in den Bedingungen.
Ansonsten könnte man die Zuweisungen der Prozeduren an das Array in die Repeatschleife schreiben, nachdem diese ja nur einmal durchlaufen wird ;)

leddl 20. Feb 2005 10:37

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...

alcaeus 20. Feb 2005 10:38

Re: Passwortüberprüfung mit repeat / until?!
 
@Chimaira: huebsche Loesung, koennte von mir sein ;)

Zitat:

Zitat von leddl
:thumb: Ich denke aber trotzdem, daß der Lehrer(?) schon erwartet, daß in der Repeat-Until irgendwas geschieht! ;)

IMHO macht eine repeat-until Schleife in Verbindung mit einem OnKeyUp schon ueberhaupt keinen Sinn. Und wenn die Schleife was machen soll, dann schreib folgenden Code rein:
Delphi-Quellcode:
asm
nop;
end;
Die Schleife macht was (Ausfuehrung von nop), aber nop steht fuer "No Operation", also macht der Befehl nix. :zwinker:

Greetz
alcaeus

JasonDX 20. Feb 2005 10:40

Re: Passwortüberprüfung mit repeat / until?!
 
Zitat:

Zitat von leddl
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...

Delphi ist schlau genug und behält Prozeduren, die Irgendwo verwendet werden ;)
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)

leddl 20. Feb 2005 10:52

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.

Neutral General 20. Feb 2005 11:30

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:

JasonDX 20. Feb 2005 11:49

Re: Passwortüberprüfung mit repeat / until?!
 
Zitat:

Zitat von Neutral General
Wobei die Aufgabenstellung schon ziemlich blöd ist find ich.
"Warum einfach wenns kompliziert geht" dachte sich wohl der Aufgabengeber... :roll:

Weißt auf schule hin...
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