Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Passwortabfrage mit max Anz. Versuchen


Salieri - Do 10.09.09 21:40
Titel: Passwortabfrage mit max Anz. Versuchen
Hi,

ich hoffe in dem Unterforum bin ich richtig.
Ich arbeite noch nicht lange mit Delphi, eigentlich auch nur im Rahmen der Schule. Unser Lehrer meinte, wir müssen das zuhause noch nicht hinbekommen, aber trotzdem würd ich es gern schaffen...
Es geht darum, dass wir gerade eine simple Passwortabfrage gemacht haben und nach 3 Fehlversuchen soll das Programm geschlossen werden. Ich komm da aber nich weiter, Delphi zeigt mir nur ne Warnung, mit der ich aber nichts anfangen kann: [Warnung] mRechner1.pas(87): Variable 'count' ist möglicherweise nicht initialisiert worden
Ansonsten startet das Programm, es passiert nur nicht das, was ich nach drei Fehlversuchen haben möchte.
Hier mal der entsprechende bereich im Quelltext:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.PassExecuteClick(Sender: TObject);

 var count: Integer;

begin
 if password.Text = '123456' then
  begin
   Button1.Visible := true;
   ShowMessage ('Passwort korrekt!');
  end
 else
  begin
   ShowMessage ('Passwort falsch!');
   inc(count);
    if count = 3 then
     Application.Terminate;
  end;
end;

Ich bedanke mich schonmal im Voraus. :)


Xentar - Do 10.09.09 21:44

Naja, du verwendest da eien lokale Variable.
Jedesmal, wenn die Prozedur aufgerufen wird (also bei jedem Versuch), hat diese einen undefinierten Zustand.

Besser:
Deklarier die Variable unter TForm1 -> Private, und initialisier diese im OnCreate mit dem Wert 0.


Delete - Do 10.09.09 22:10

Solche Fehler sollte man eigentlich auch selber finden . Wen irgendein Code kompiliert und läuft, aber nicht das macht, was er soll, dann debuggt man den Code einfach mal und guckt sich die Inhalte der Variablen an. Dann wäre dir auch aufgefallen, dass deine Zählvariable entweder jedes mal null ist oder Datenmüll enthält.


Hidden - Do 10.09.09 22:25

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Wenn irgendein Code kompiliert und läuft, aber nicht das macht, was er soll, dann debuggt man den Code einfach mal und guckt sich die Inhalte der Variablen an.
Aber nur mit Vorwissen :)

Das ist ja jetzt da, beim nächsten Mal kannst du erst einmal in den Optionen die Compilerwarnungen einschalten und dann auch mit Klicks auf die blauen Punkte auf der Leiste neben dem Queltext Haltepunkte setzen. Wenn das Programm dann an diese Stelle kommt, steht es und du kannst die Werte der Einzelnen Variablen in dieser Momentaufnahme per Mouse-Over ablesen.

mfG,


Delete - Do 10.09.09 23:40

Ich glaube, das gehört zu den ersten Dingen, die mir angucke bei einer neuen IDE, wie der Debugger funktioniert.


Xentar - Do 10.09.09 23:57

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Ich glaube, das gehört zu den ersten Dingen, die mir angucke bei einer neuen IDE, wie der Debugger funktioniert.

Wenn man schon programmieren kann, und weiß, dass es "sowas" gibt, ja.
Aber als ich mit Delphi angefangen hab, hatte ich auch überhaupt keine Ahnung, dass es sowas wie Haltepunkte überhaupt gibt.


Bergmann89 - Fr 11.09.09 00:54

Hey,

user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
du kannst die Werte der Einzelnen Variablen in dieser Momentaufnahme per Mouse-Over ablesen.

Das geht aber erst in den neueren Delphi Versionen, oder? Ich mach das immer mit "Auslesen/Ändern" (Strg+F7)

MfG Bergmann.


Delete - Fr 11.09.09 03:13

Nö, das gibt es schon seit Delphi 6.


thepaine91 - Fr 11.09.09 09:12


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.PassExecuteClick(Sender: TObject);

 var count: Integer;

begin
 count := 0// schon ist die Warnung weg
 if password.Text = '123456' then
  begin


Wird aber in dem Fall nicht helfen da sie bei jedem klick wieder auf 0 wäre.

Daher schließ ich mich mal Xentar an.+

@Luckie hast du nix besseres zu tun als Anfänger zu demotivieren? Ich hätte das damals auch nicht besser gemacht....


Xentar - Fr 11.09.09 09:34

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Nö, das gibt es schon seit Delphi 6.

Ich biete mehr: Delphi 5 :D


Sauger Chris - Fr 11.09.09 11:08

ich hab nix gesagt *in die luft schau und pfeiff ^^

sry


thepaine91 - Fr 11.09.09 11:16

somit hast du Xentars aussage wiederholt. ;)


Bergmann89 - Fr 11.09.09 14:49

user profile iconXentar hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Nö, das gibt es schon seit Delphi 6.

Ich biete mehr: Delphi 5 :D


Ich hab Delphi 7 Personal un da gehts nich...Oder mach ich was falsch? Ich beweg einfach die Maus über die Variable.
(sry für OT)

MfG Bergmann.


Salieri - Fr 11.09.09 16:14

@Xenter & thepaine91:
Danke für eure Hilfe, jetzt funktioniert es. :)

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Solche Fehler sollte man eigentlich auch selber finden . Wen irgendein Code kompiliert und läuft, aber nicht das macht, was er soll, dann debuggt man den Code einfach mal und guckt sich die Inhalte der Variablen an. Dann wäre dir auch aufgefallen, dass deine Zählvariable entweder jedes mal null ist oder Datenmüll enthält.

Ich hab ernsthaft keine Ahnung wovon du da überhaupt sprichst. Wenn du dich mit deinem so tollen Wissen vor anderen profilieren willst, dann halt dich halt von Leuten fern, die noch anfänger sind. Denn statt rumzukacken was ich alles selbst raus finden könnte, könntest du mir lieber mal erklären wie! Immerhin ist das ein Forum, eines wo man auch als Anfänger Hilfe sucht, wenn dir das nich gefällt dann les halt nicht weiter, wenn einer schon schreibt, dass er noch Anfänger ist. -.-*


Hidden - Sa 12.09.09 12:04

Hi :)

Auch mit den nachfolgenden Erklärungen nicht? Hast du es mal verucht, das ganze ist nämlich sehr nützlich und vor allem schnell ;)

mfG,


Dude566 - Sa 12.09.09 12:15

In dem folgenden Link findest du einige nützliche Erklärungen zu der IDE, unter anderem auch das Debuggen.
http://www.delphi-treff.de/delphi-ide/


Salieri - Do 17.09.09 17:02

user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
In dem folgenden Link findest du einige nützliche Erklärungen zu der IDE, unter anderem auch das Debuggen.
http://www.delphi-treff.de/delphi-ide/

Vielen Dank, das hilft mir sehr. :)