Temps restant avant la prochaine journée

HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011 - 1 sept. 2006 à 13:47
HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011 - 1 sept. 2006 à 19:34
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

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

ciao...
BruNews, MVP VC++
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
1 sept. 2006 à 15:35
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.
0
HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011
1 sept. 2006 à 15:48
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...
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
1 sept. 2006 à 15:56
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011
1 sept. 2006 à 16:05
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...
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
1 sept. 2006 à 16:30
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.
0
HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011
1 sept. 2006 à 19:34
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)
0
Rejoignez-nous