Autor Beitrag
Salieri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Do 10.09.09 21:40 
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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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.

_________________
PROGRAMMER: A device for converting coffee into software.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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.

_________________
PROGRAMMER: A device for converting coffee into software.
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: 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.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 11.09.09 03:13 
Nö, das gibt es schon seit Delphi 6.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 11.09.09 09:12 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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

_________________
PROGRAMMER: A device for converting coffee into software.
Sauger Chris
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 228

Win XP, Linux SuSE 9.2
Delphi 4,Delphi 7 Ent.
BeitragVerfasst: Fr 11.09.09 11:08 
ich hab nix gesagt *in die luft schau und pfeiff ^^

sry


Zuletzt bearbeitet von Sauger Chris am Fr 11.09.09 13:57, insgesamt 1-mal bearbeitet
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 11.09.09 11:16 
somit hast du Xentars aussage wiederholt. ;)
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: 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.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Salieri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: 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.
www.delphi-treff.de/delphi-ide/

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Salieri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: 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.
www.delphi-treff.de/delphi-ide/

Vielen Dank, das hilft mir sehr. :)