Błąd w kompilacji funkcji konwersji czasu w Keil: pomijanie godzin?
keil problem
From: "drozdu" <lbajger_at_nospam_wp.pl>
Subject: keil problem
Date: Tue, 6 Jul 2004 12:36:54 +0200
Witam!
Mam problem z kompilatorem keil: kompiluje nastepujaca funkcje:
// funkcja konwersji czasu na wartosc
unsigned lond conv(time_t *t)
{
unsigned long ret = t->H * 3600 + // godziny
t->M * 60 + // minuty
t->S; // sekundy
return (ret);
}
typedef struct time_t
{
char t[3];
#define H t[0]
#define M t[1]
#define S t[3]
};
i tu fragment kodu:
ctime = conv(&curent);
btime = conv(&begin);
etime = conv(&end);
// komparowanie czasu
if (btime <= ctime && ctime > etime)
{
...
}
else
{
...
}
problem polega na tym ze po uruchomieniu aplikacji okazalo sie
ze funkcja nie komparuje calej wartosci chyba tzn: pomija godziny.
Czy tzeba zastosowac jakies zutowanie ? gdzie moze byc blad ?
Jak sie ma keil do duzych liczb ? Ile w keilu zajmuje long ?
pozdr.
LB
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: keil problem
Date: Tue, 06 Jul 2004 13:22:13 +0200
On Tue, 6 Jul 2004 12:36:54 +0200, drozdu wrote:
Mam problem z kompilatorem keil: kompiluje nastepujaca funkcje:
unsigned lond conv(time_t *t)
{
unsigned long ret = t->H * 3600 + // godziny
tu proponuje 3600L. albo (long)(t->H)
t->M * 60 + // minuty
A tu kto wie czy (int) nie brakuje
t->S; // sekundy
return (ret);
}
typedef struct time_t
{
char t[3];
#define H t[0]
#define M t[1]
#define S t[3]
};
i tu fragment kodu:
ctime = conv(&curent);
btime = conv(&begin);
etime = conv(&end);
// komparowanie czasu
if (btime <= ctime && ctime > etime)
Jak cos bedzie miedzy np 22:00 a 8:00, to bedzie klopot :-)
J.
========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Pawel Kurzawa" <groups_at_nospam_kpw.qs.pl>
Subject: Re: keil problem
Date: Tue, 6 Jul 2004 14:57:08 +0200
// komparowanie czasu
if (btime <= ctime && ctime > etime)
Jak cos bedzie miedzy np 22:00 a 8:00, to bedzie klopot :-)
dokladnie :)
u mnie wyglada to tak :
BOOL CompareTimes ( Time_t x, Time_t y ) { //porowanie czasow ON/OFF z aktualnym czaasem
if ( x.hour > y.hour && CompareTimes ( y, x ) == FALSE ) return TRUE; //jezlie t_on > t_off to wywolaj funkcje z zamiana
argumentow
if ( x.hour == y.hour && x.min == y.min && x.sec == y.sec ) return TRUE;
else if (( RealTime.hour > x.hour ||
( RealTime.hour == x.hour && RealTime.min > x.min ) ||
( RealTime.hour == x.hour && RealTime.min == x.min && RealTime.sec >= x.sec ) ) &&
( RealTime.hour < y.hour ||
( RealTime.hour == y.hour && RealTime.min < y.min ) ||
( RealTime.hour == y.hour && RealTime.min == y.min && RealTime.sec < y.sec ) ) ) return TRUE;
else return FALSE;
}
typedef struct {
u08 hour;
u08 min;
u08 sec;
} Time_t;
--
--
Best regards
K_at_nospam_pW from Poland
kpw(at)qs.pl
http://kpw.qs.pl
UIN: 8017753
GG: 1263183
---------------- end ----------------
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: keil problem
Date: Sat, 10 Jul 2004 15:59:04 +0200
Użytkownik "drozdu" <lbajger_at_nospam_wp.pl> napisał w wiadomości
news:ccdvmf$f3e$1_at_nospam_nemesis.news.tpi.pl...
Witam!
Mam problem z kompilatorem keil: kompiluje nastepujaca funkcje:
// funkcja konwersji czasu na wartosc
unsigned lond conv(time_t *t)
{
unsigned long ret = t->H * 3600 + // godziny
t->M * 60 + // minuty
t->S; // sekundy
return (ret);
}
Witam.
Sprobuj tak:
unsigned lond conv(time_t *t)
{
unsigned long ret =(unsigned long) t->H * 3600 + // godziny
(unsigned long)t->M * 60 + // minuty
(unsigned long)t->S; // sekundy
return (ret);
}
pozdrawiam, peters
========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news-fra1.dfn.de!npeer.de.kpn-eurorings.net!newsfeeder1.noc.eunet-ag.at!news.eunet.at!newsfeed02.chello.at!news.chello.at.POSTED!53ab2750!not-for-mai
From: "KsiTau" <ksitauBEZSPAMU_at_nospam_tenbit.pl>
Subject: Re: keil problem
Date: Sat, 10 Jul 2004 22:04:10 GMT
Ja bym tutaj jeszcze zastąpił jeden z wyrazów "lond" na "long" :)
pozdr.
PS. Mam do dokończenia jakiś program w Keil C, czy ktoś z Was nie chciałby
się podjąć tego zadania?
Użytkownik "peters" <peters_at_nospam_poczta.onet.pl> napisał w wiadomości
news:ccostc$gp9$2_at_nospam_nemesis.news.tpi.pl...
Użytkownik "drozdu" <lbajger_at_nospam_wp.pl> napisał w wiadomości
news:ccdvmf$f3e$1_at_nospam_nemesis.news.tpi.pl...
Witam!
Mam problem z kompilatorem keil: kompiluje nastepujaca funkcje:
// funkcja konwersji czasu na wartosc
unsigned lond conv(time_t *t)
{
unsigned long ret = t->H * 3600 + // godziny
t->M * 60 + // minuty
t->S; // sekundy
return (ret);
}
Witam.
Sprobuj tak:
unsigned lond conv(time_t *t)
{
unsigned long ret =(unsigned long) t->H * 3600 + // godziny
(unsigned long)t->M * 60 + // minuty
(unsigned long)t->S; // sekundy
return (ret);
}
pozdrawiam, peters
========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!not-for-mai