PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : newbiefrage - stoppuhr


n00b
08.02.2002, 01:17
Tagchen Leutz, :D
Ich habe versucht ne Stoppuhr mit Minuten, Sekunden und Zentelsekunden mit dem Borland C++ Builder zu basteln... :rolleyes:
Dazu habe ich einen Timer genommen den intervall auf 100 gestellt, was einer 10el Sekunde entsprechen sollte und dann darin folgenden Code eingefügt:

{
int min=0;
int sec=0;
int zsec=0;


if(zsec=10)
{
zsec = 0;
sec++;
}
if(sec>59)
{
sec=0;
min++;
}
else
++zsec;

LabMin->Caption = IntToStr(min)+":";
LabSec->Caption = IntToStr(sec)+":";
LabZsec->Caption = IntToStr(zsec);

}

Leider funktioniert die ganze Sache nicht so wie sie soll ;( , kann mir jemand sagen woran das liegen könnte?


Felix Kaiser
08.02.2002, 01:22
if (zsec ==10) {
zsec = 0;
sec++;
if (sec > 59) {
sec = 0;
min++;
}
} else
++zsec;


Versuchs mal damit.

nj0y
08.02.2002, 07:44
int min=0;
int sec=0;
int zsec=0;


Damit setzt Du bei jedem Funktionsaufruf die Variablen wieder auf 0, bei Verlassen der Funktion wird der Speicher für die Variablen sogar wieder freigegeben. Du willst die aber nur einmal auf 0 setzen und den Speicher für immer reservieren. Das geht so:

static int min=0;
static int sec=0;
static int zsec=0;


Außerdem ist Deine Methode ungenau (die vom Guru leider auch).

"if(zsec=10)" sollte heißen "if(zsec == 9)" (mit zwei Gleichheitszeichen übrigens). Die Sekundenüberprüfung sollte, wie vom Guru vorgeschlagen, nur stattfinden, wenn die Zehntelsekunden auf 0 gesetzt wurden.

Mein Vorschlag:


{
static int min = 0, sec = 0, zsec = 0;

zsec++;
if(zsec >= 10)
{
zsec = 0;
sec++;
if(sec >= 60)
{
sec = 0;
min++;
}
}

LabMin->Caption = AnsiString(min) + ":";
LabSec->Caption = AnsiString(sec) + ":";
LabZsec->Caption = AnsiString(zsec);
}

n00b
08.02.2002, 15:50
danke für die Hilfe 8)
und auch danke dafür dass du nicht nur n sourcecode gepostet hast sondern auch ne erklärung mitgeliefert und mir gesagt hast was ich falschgemacht hab :)