IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

time(NULL) pour WinCE


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 70
    Points
    70
    Par défaut time(NULL) pour WinCE
    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

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    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.

  3. #3
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    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.

  4. #4
    Membre régulier
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 70
    Points
    70
    Par défaut
    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.

    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; 
    }
    Également vos propositions peuvent résoudre le problème.
    Encore merci pour l’aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [insertion]0 et non NULL pour un champ real
    Par Tchinkatchuk dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 12/07/2005, 19h19
  2. Réponses: 2
    Dernier message: 15/03/2005, 10h13
  3. [VB.NET] Valur null pour une date.
    Par Lois dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/12/2004, 15h38
  4. visual c++ mais que pour winCE
    Par julienx dans le forum MFC
    Réponses: 2
    Dernier message: 10/11/2004, 20h25
  5. Réponses: 9
    Dernier message: 10/08/2004, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo