Bonjour,
J'ai besoin de récupérer le nombre de seconde depuis 1970 dans un projet WinCE.
Cependant la fonction time(NULL) fonctionne pour win32 et linux mais pas pour WinCE.
Est ce que quelqu'un peut m'aider.
Merci
Bonjour,
J'ai besoin de récupérer le nombre de seconde depuis 1970 dans un projet WinCE.
Cependant la fonction time(NULL) fonctionne pour win32 et linux mais pas pour WinCE.
Est ce que quelqu'un peut m'aider.
Merci
Google a répondu à ma place :
http://www.opennetcf.com/SharedSourc...7/Default.aspx
Qui pointe sur :
http://time.codeplex.com/
Les noms des fonctions et types sont postfixés avec _ce pour éviter les problèmes de redéfinition.
Il manque en effet pas mal de fonction de la bibliothèque standard C sur Windows CE et c'est souvent bien pénible lorsqu'on veut utiliser du code provenant d'Unix.
Perso, j'avais utilisé http://wcelibcex.sourceforge.net/ il y a quelques temps et n'avais pas rencontré de problème (mais je n'avais pas testé les fonctions time non plus)
En tout cas, attention si tu choisis d'écrire la fonction time à la main : le piège étant que ça semble très simple à faire à première vu - la structure windows FILETIME représente le nombre de centaines de nanosecondes depuis le 1 janvier 1601, epoch le nombre de seconde depuis 1970, donc une simple soustraction semble régler le problème - mais c'est en fait plus compliqué que ça car des problèmes de timezone assez pénible rentrent en jeu.
Merci Emmanuel Deloget et arzar pour vos réponses.
Effectivement vous avez raison il y a des commandes standard C non supporté par WinCE.
Il fallait les implémenter ou trouver des librairies pour ça.
En fait j’ai besoin de faire une comparaison entre deux instants pour voir est ce que un timeout est écoulé ou non.
Pour ça j’ai besoin de récupérer deux temps en seconde.
J’ai trouvé une fonction dans MSDN que je pence satisfaire mon besoin.
Également vos propositions peuvent résoudre le problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 time_t time( time_t *inTT ) { SYSTEMTIME sysTimeStruct; FILETIME fTime; ULARGE_INTEGER int64time; time_t locTT = 0; if ( inTT == NULL ) { inTT = &locTT; } GetSystemTime( &sysTimeStruct ); if ( SystemTimeToFileTime( &sysTimeStruct, &fTime ) ) { memcpy( &int64time, &fTime, sizeof( FILETIME ) ); /* Subtract the value for 1970-01-01 00:00 (UTC) */ int64time.QuadPart -= 0x19db1ded53e8000; /* Convert to seconds. */ int64time.QuadPart /= 10000000; *inTT = int64time.QuadPart; } return *inTT; }
Encore merci pour l’aide.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager