Illaz
Grünschnabel
Hi,
is das erste mal, dass ich hier poste und ich hoff ich mach alles richtig =)
als kleine entschuldigung vorweg: ich hock seit ca 5 stunden an diesem problem und bin scho leicht daab in der birne.. also bitte verzeiht mir rechtschreibungs- und formulierungsfehler
Zuerst einmal zu meinem Problem:
Mein Ziel ist es einen Code zu programmieren, der die aktuelle Uhrzeit mit einer festgesetzten vergleicht und die Differenz bildet. Über einen Timer wird das jede sekunde ausgelöst, so dass der Countdown abwärts zählt.
Die aktuelle Zeit hol ich mir mit GetLocalTime(&tm); .
Die festgesetzte Zeit wird über 3 ComboBoxen in int hh,mm,ss geschrieben.
int counthh, countmm, countss sind die werte, die dann als countdown ausgegeben werden.
Ich poste mal hier den relevanten Auszug aus meinem Quelltext (hoffentlich löst das bei euch keinen Augenkrebs aus ^^)
Dass diese Methode total schwachsinnig (und zudem noch gespickt mit millionen von fehlern) ist, weiss ich, aber ich wusst mir einfach nicht anders zu helfen und habs halt mal so programmiert wie ichs mir gedacht hab.(was 3 von den 5 stunden in anspruch genommen hat ^^ der rest war recherche, wobei ich aber meistens nur auf delphi, java usw gestoßen bin =( )
Kann mich bitte jemand von dieser Folter befreien und mir sagen, dass meine ganze Arbeit umsonst war und ich das um einiges einfacher lösen hätte können? ^^
Bin dankbar für alle Hinweise und Hilfestellungen
mfG Illaz
is das erste mal, dass ich hier poste und ich hoff ich mach alles richtig =)
als kleine entschuldigung vorweg: ich hock seit ca 5 stunden an diesem problem und bin scho leicht daab in der birne.. also bitte verzeiht mir rechtschreibungs- und formulierungsfehler

Zuerst einmal zu meinem Problem:
Mein Ziel ist es einen Code zu programmieren, der die aktuelle Uhrzeit mit einer festgesetzten vergleicht und die Differenz bildet. Über einen Timer wird das jede sekunde ausgelöst, so dass der Countdown abwärts zählt.
Die aktuelle Zeit hol ich mir mit GetLocalTime(&tm); .
Die festgesetzte Zeit wird über 3 ComboBoxen in int hh,mm,ss geschrieben.
int counthh, countmm, countss sind die werte, die dann als countdown ausgegeben werden.
Ich poste mal hier den relevanten Auszug aus meinem Quelltext (hoffentlich löst das bei euch keinen Augenkrebs aus ^^)
Code:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
//Zeit bekommen
GetLocalTime(&tm);
Label2->Caption = tm.wHour;
Label3->Caption = tm.wMinute;
Label4->Caption = tm.wSecond;
if (timer ==1)
{
//COUNTDOWN START
counthh = hh - tm.wHour;
countmm = mm - tm.wMinute;
countss = ss - tm.wSecond;
/*
//hh<
if (tm.wHour<hh&&tm.wMinute<mm&&tm.wSecond<=ss)
{
//Sinnlos, da keine Korrektur benötigt ^^
}
if (tm.wHour<hh&&tm.wMinute<mm&&tm.wSecond>ss)
{
countss=countss+60;
countmm=countmm-1;
}
if (tm.wHour<hh&&tm.wMinute==mm&&tm.wSecond<ss)
{
//countss=countss+60;
countmm=countmm+59;
}
if (tm.wHour<hh&&tm.wMinute==mm&&tm.wSecond>ss)
{
countss=countss+60;
countmm=countmm+59;
}
if (tm.wHour<hh&&tm.wMinute>mm&&tm.wSecond<=ss)
{
counthh=counthh-1;
countmm=countmm+60;
}
if (tm.wHour<hh&&tm.wMinute>mm&&tm.wSecond>ss)
{
counthh=counthh-1;
countmm=countmm+59;
countss=countss+60;
}
// hh=
if (tm.wHour==hh&&tm.wMinute<mm&&tm.wSecond<=ss)
{
counthh=counthh+23;
}
if (tm.wHour==hh&&tm.wMinute<mm&&tm.wSecond>ss)
{
counthh=counthh+23;
countss=countss+60;
}
if (tm.wHour==hh&&tm.wMinute==mm&&tm.wSecond<ss)
{
counthh=counthh+23;
countmm=countmm+59;
countss=countss+60;
}
if (tm.wHour==hh&&tm.wMinute==mm&&tm.wSecond>ss)
{
counthh=counthh+23;
countmm=countmm+59;
countss=countss+60;
}
if (tm.wHour==hh&&tm.wMinute>mm&&tm.wSecond<=ss)
{
counthh=counthh+23;
countmm=countmm+60;
}
if (tm.wHour==hh&&tm.wMinute>mm&&tm.wSecond>ss)
{
counthh=counthh+23;
countmm=countmm+59;
countss=countss+60;
}
// hh>
if (tm.wHour>hh&&tm.wMinute<mm&&tm.wSecond<=ss)
{
counthh=counthh+24;
//countmm=countmm+59;
//countss=countss+60;
}
if (tm.wHour>hh&&tm.wMinute<mm&&tm.wSecond>ss)
{
counthh=counthh+24;
countmm=countmm-1;
countss=countss+60;
}
if (tm.wHour>hh&&tm.wMinute==mm&&tm.wSecond<=ss)
{
counthh=counthh+23;
countmm=countmm+60;
//countss=countss+60;
}
if (tm.wHour>hh&&tm.wMinute==mm&&tm.wSecond>ss)
{
counthh=counthh+23;
countmm=countmm+59;
countss=countss+60;
}
if (tm.wHour>hh&&tm.wMinute>mm&&tm.wSecond<=ss)
{
counthh=counthh+23;
countmm=countmm+60;
//countss=countss+60;
}
if (tm.wHour>hh&&tm.wMinute>mm&&tm.wSecond>ss)
{
counthh=counthh+23;
countmm=countmm+59;
countss=countss+60;
}
*/
Label12->Caption = IntToStr(counthh);
Label13->Caption = IntToStr(countmm);
Label14->Caption = IntToStr(countss);
//COUNTDOWN ENDE
}
if (timer == 1 && tm.wHour == hh && tm.wMinute == mm && tm.wSecond == ss)
{
//Alarmereignisse
}
}
Dass diese Methode total schwachsinnig (und zudem noch gespickt mit millionen von fehlern) ist, weiss ich, aber ich wusst mir einfach nicht anders zu helfen und habs halt mal so programmiert wie ichs mir gedacht hab.(was 3 von den 5 stunden in anspruch genommen hat ^^ der rest war recherche, wobei ich aber meistens nur auf delphi, java usw gestoßen bin =( )
Kann mich bitte jemand von dieser Folter befreien und mir sagen, dass meine ganze Arbeit umsonst war und ich das um einiges einfacher lösen hätte können? ^^
Bin dankbar für alle Hinweise und Hilfestellungen
mfG Illaz