AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) Quellcode Überprüfung (For Schleifen Fehler)
Thema durchsuchen
Ansicht
Themen-Optionen

Quellcode Überprüfung (For Schleifen Fehler)

Ein Thema von atzornf · begonnen am 6. Dez 2015 · letzter Beitrag vom 6. Dez 2015
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.458 Beiträge
 
Delphi 12 Athens
 
#1

AW: Quellcode Überprüfung (For Schleifen Fehler)

  Alt 6. Dez 2015, 17:16
@atzornf: Die Delphi Tags üben wir noch...
Zitat:
Sofern die Benutzereingabe falsch ist, sollen sich die Eingabefelder leeren und eine Labelbeschriftung mit Falscher Eingabe erzeugen.--> das ganze soll 3 mal von statten gehen
Dann mußt du dem Benutzer auch die Möglichkeit geben das er 3 x auf den Button klicken kann. Merkst du was? Es macht keinen Sinn innerhalb der Klick procedure die Schleife laufen zu lassen. Die Fehlversuche mußt du dir außerhalb der procedure z.B. als privates Feld merken. Innerhalb der Klick procedure prüfst du ob die Anzahl der Fehlversuche kleiner als dein MAX ist und prüfst die Kombination. Ansonsten wird das Fenster geschlossen wie auch bei erfolgreicher Prüfung.

Geändert von haentschman ( 6. Dez 2015 um 17:25 Uhr)
  Mit Zitat antworten Zitat
atzornf

Registriert seit: 6. Dez 2015
Ort: Völklingen
11 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Quellcode Überprüfung (For Schleifen Fehler)

  Alt 6. Dez 2015, 17:23
@haentschman

Programmiere heute zum ersten mal mit Delphi.
Wäre super, wenn du mir helfen würdest.

Wäre auch mal interessant zu wissen, was ich falsch gemacht habe.
Fabian
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Quellcode Überprüfung (For Schleifen Fehler)

  Alt 6. Dez 2015, 17:26
Delphi-Quellcode:
for i := 1 to 3 do
begin
  if (s_benutzername.Caption = benutzername) and (s_passwort.Caption = passwort) then
  begin
    s_benutzername.Clear;
    s_passwort.Clear;
    form_hauptmenue.Show;
  end
  else
  begin
    s_benutzername.Clear;
    s_passwort.Clear;
    ausgabe_fehlermeldung.Caption := 'Falsche Eingabe';
    zaehler := i + 1;
  end;
  if zaehler >= 6 then
  begin
    form_benutzerlogin.Close;
  end;
end;
Ich habe es mal sauber formatiert. Vielleicht siehst du dann deinen Fehler.

Davon mal abgesehen. Lokale Variablen werden nicht initialisiert. zaehler enthält also einen zufälligen Wert. Und was soll das zaehler := i + 1; ?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
atzornf

Registriert seit: 6. Dez 2015
Ort: Völklingen
11 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Quellcode Überprüfung (For Schleifen Fehler)

  Alt 6. Dez 2015, 17:30
@Luckie

Stehe gerade auf dem Schlauch!

zaehler = i + 1;
Damit meine ich, dass die zaehler Variable den Wert von i anholen soll und i bei jedem durchlauf um 1 erhöht wird.
Fabian
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Quellcode Überprüfung (For Schleifen Fehler)

  Alt 6. Dez 2015, 17:37
Du weist zaehler den aktuellen Wert der Zählvariablen zu um eins erhöht. Aber warum? Was soll die Variable denn Zähen?

Druck dir den Code mal aus und gehe ihn mal mit einem Bleistift in der Hand durch.

Schleife beginnt
i = 1
if Abfrage ist false
Eingabefelder werden gelöscht
Sprung zum Anfang der Schleife
i = 2
if Abfrage ist false (logisch, kann sich ja nichts geändert haben)
Eingabefelder werden gelöscht
Sprung zum Anfang der Schleife
i = 3
if Abfrage ist immer noch false
Eingabefelder werden gelöscht
Sprung zum Anfang der Schleife
Schleife wird verlassen

Du siehst, die Schleife ist irgendwie überflüssig, da sich an (s_benutzername.Caption = benutzername) and (s_passwort.Caption = passwort) nie was ändern wird.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie ( 6. Dez 2015 um 17:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Quellcode Überprüfung (For Schleifen Fehler)

  Alt 6. Dez 2015, 17:51
Ich glaube du willst das:
Code:
globale Variable AttemptCount

Button_Click:
Wenn AttemptCount < X
begin
  Wenn Benutzername und Passwort richtig
    mach was
  else
    mach was anders
    erhöhe AttemotCount
  end
end
else
  Nachricht: X Versuche verbraucht
end
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
atzornf

Registriert seit: 6. Dez 2015
Ort: Völklingen
11 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Quellcode Überprüfung (For Schleifen Fehler)

  Alt 6. Dez 2015, 18:00
@Luckie

Genau das will ich!

procedure Tform_benutzerlogin.anmelden_knopfClick(Sender: TObject);

var
benutzername : string;
passwort : string;
i : integer;

begin

benutzername := 'root';
passwort := 'dHuz76Tr%4f1B';

for i := 1 to 3 do begin

if (s_benutzername.Caption = benutzername) and (s_passwort.Caption = passwort)
then begin
form_hauptmenue.Show;
end
else begin
ausgabe_fehlermeldung.Caption := 'Falsche Eingabe';
s_benutzername.Clear;
s_passwort.Clear;
end;
end;
if i >= 3
then begin
form_benutzerlogin.Close;
end;
end;

Ich habe mal meinen Quellcode ein wenig abgeändert.
Weshalb muss ich den das ButtonClick: verwenden?
Fabian
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.458 Beiträge
 
Delphi 12 Athens
 
#8

AW: Quellcode Überprüfung (For Schleifen Fehler)

  Alt 6. Dez 2015, 18:04
Zitat:
Genau das will ich!
...hast aber immer noch die Schleife drin...

ButtonClick ist deine procedure Tform_benutzerlogin.anmelden_knopfClick(Sender: TObject); Mit den Delphi Tags nerv ich dich heute noch...

Geändert von haentschman ( 6. Dez 2015 um 18:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Quellcode Überprüfung (For Schleifen Fehler)

  Alt 6. Dez 2015, 18:05
Benutz bitte die Delphi-Tags!

Mein Button_Click ist nur eine Pseudo-Bezeichnung. für irgendeine ButtonClick Routine.

Noch mal. Du hast nicht verstanden, warum deine Schleife überflüssig und nutzlos ist. Ich habe dir doch genau beschrieben, was deine Schleife macht, nämlich im Prinzip nichts, weil sich die Eingabe ja nicht ändert. Und wenn sie bei ersten Durchlauf falsch ist, wird es die Eingabe auch beim millionsten Durchlauf sein.

Und du hast meinen Pseudo-Code nicht umgesetzt. Das Denken habe ich dir schon abgenommen. Du musst es nur noch in Delphi formulieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.458 Beiträge
 
Delphi 12 Athens
 
#10

AW: Quellcode Überprüfung (For Schleifen Fehler)

  Alt 6. Dez 2015, 17:32
Upps...
Zitat:
Programmiere heute zum ersten mal mit Delphi.
...dann hilft hier eher mal ein Blatt Papier wo du dir in normalen Worten einen Plan erstellst was wann in welcher Reihenfolge passieren soll (Ablaufdiagramm siehe Anhang) Der Code ist erstmal zweitrangig.

Ein Projekt zum üben ist mit Sicherheit nicht falsch. Man sollte aber, bevor man sich an so etwas wagt, ein paar Tutorials durchgeackert haben. Dieses z.B. http://www.stelzmann-development.de/.../crashkurs.htm
Da Objektpascal ereignisorientiert funktioniert wirst du nach dem Tutorial deinen Code auch verstehen warum das nicht funktioniert.
Angehängte Grafiken
Dateityp: png Verhalten.png (225,8 KB, 23x aufgerufen)

Geändert von haentschman ( 6. Dez 2015 um 17:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:12 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