Temps restant avant la prochaine journée

Signaler
Messages postés
223
Date d'inscription
mercredi 13 juillet 2005
Statut
Membre
Dernière intervention
8 août 2011
-
Messages postés
223
Date d'inscription
mercredi 13 juillet 2005
Statut
Membre
Dernière intervention
8 août 2011
-
Bonjour,

Je suis entrain de coder une fonction permettant de récuperer le temps restant avant la prochaine journée, pour se faire j'utilise la fonction SetWaitableTimer (le programme n'a pas de fenêtre), le problème c'est que cette fonction reçoit comme paramètre un nombre 64 bits, et les nombres 64 bits ne sont pas supportés par mon EDI (CodeBlocks).
Voila le code :

    SYSTEMTIME st;
    LARGE_INTEGER li;

    //Récupération de la date locale.
    GetLocalTime(&st);
   
    //864000000000 = 24heures en nanosecondes, On soustrait 24h à la date actuelle.
    li.QuadPart = 864000000000 - (((stToday.wHour * 3600000) + (stToday.wMinute * 60000) + (stToday.wSecond * 1000) + stToday.wMilliseconds) * 10000);

    SetWaitableTimer(hTimer, &li, 0, NULL, NULL, 0);

Voila donc c'est la ligne d'affectation li.QuadPart qui coince puisque je ne peux pas utiliser les entiers 64 bits et je ne sais pas comment transformer la date actuelle 64 bits en 2*32bits pour l'affecter à la structure LARGE_INTEGER

7 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
Visual C++ Express 2005:
http://www.cppfrance.com/code.aspx?ID=38359

ciao...
BruNews, MVP VC++
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
8
Il y a un type d'entier 64 bits avec GCC ou MinGW : le type long long ou unsigned long long. Ils sont l'équivalent du __int64 de VC++.

<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
Messages postés
223
Date d'inscription
mercredi 13 juillet 2005
Statut
Membre
Dernière intervention
8 août 2011

Merci pour les réponses, j'ai testé le type long long ça ne fonctionne pas sous CodeBlocks, et j'ai pas trop envie de changer d'EDI encore une fois...
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
8
Tu peut télécharger le compilateur de VC++ 2003 et le mettre avec CodeBlocks sans problème. Le nom est Visual C++ Toolkit 2003, mais le téléchargement n'est plus sur le site de MS, je pense que vecchio56 en a une copie, faudra lui demander.

<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
Messages postés
223
Date d'inscription
mercredi 13 juillet 2005
Statut
Membre
Dernière intervention
8 août 2011

Oui merci [auteurdetail.aspx?ID=535688 nightlord666] je l'ai deja, je l'avais testé mais ça buggais avec CodeBlocks, je vais réessayer. Saleté d'EDI, ça se voit que c'est gratos tiens...
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
8
Visual C++ Express 2005 est gratos aussi ^^.

Je ne comprends pas que le long long ne soit pas accepté... Normalement ça marche sous GCC ou MinGW. Donne moi le message d'erreur du compilo si tu l'utilise s'il te plait.

<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
Messages postés
223
Date d'inscription
mercredi 13 juillet 2005
Statut
Membre
Dernière intervention
8 août 2011

lol ouai

Visual C++ Express 2005 doit deja être moins buggé, CodeBlocks en est encore qu'à la version 1.0RC2.
C'est bien MinGW le compilo par défaut de CodeBlocks il me met l'erreur :

"integer constant is too large for "long" type"

quelque soit le type que j'utilise
J'ai essayé de mettre Visual C++ Toolkit 2003 comme compilo à la place met ya un gros bug il me vire le debugger (gdb), impossible de faire fonctionner les 2 en même temps et il veux pas compiler pour je ne sait qu'elle raison...

Enfin bon c'est pas grave je vais changer d'EDI (pour la troisième fois ), et basculer sous

Visual C++ Express 2005, Microsoft ya que ça de vrai ! (lol)