[résolu]Résolution de l'heure sous windows XP

K-lo
[résolu]Résolution de l'heure sous windows XP

Bonjour j'aimerai connaitre la résolution de l'heure sous windows :

j'aimerai récupérer (pas afficher) l'heure en cours, au millième de seconde près mais ça semble impossible... (en C++ via boost ou Qt, j'affiche bien l'heure au millième mais je la récupère à la seconde près)... :?:

K-lo

Pour régler le problème avec l'heure je suis obligé de rajouter une temporisation
Sleep(10);

dans mon programme pour éviter les écrasement de fichier!

En théorie je réinitialise bien ma variable qui récupère la date mais en pratique je serai limité par la résolution du système... :?

fredericmazue

Salut k-lo,

Un petit coucou de vacances, après une bonne baignade aujourd'hui :D

Quote:
j'aimerai récupérer (pas afficher) l'heure en cours, au millième de seconde près mais ça semble impossible...

Bon normalement je ne devrais pas répondre parce que je ne suis pas là. Mais puisque c'est toi, je fais très volontiers une exception :)
Donc ce que tu veux est possible. Il te suffit d'appeler la fonction système GetSystemTime, qui va te remplir une structure avec l'heure courante millisecondes comprises. C'est documenté dans la MSDN ici:
http://msdn2.microsoft.com/en-us/library/ms724390.aspx
MAIS... si tu me le permets
Je n'aime pas cela:
Quote:
je suis obligé de rajouter une temporisation
[...] dans mon programme pour éviter les écrasement de fichier!

Ca ne me semble pas une approche ni très saine ni très fiable.
Il y a sûrement une autre façon d'aborder le problème.
Que s'agit-il de faire exactement ? (Sans te promettre de continuer la discussion, parce que je suis en vacances et que même si je ne l'étais pas, comme tu as dû lire dans d'autres discussions le forum et moi pour l'instant ça fait deux... mais bon comme c'est toi ;) )
K-lo

Quote:
(Sans te promettre de continuer la discussion, parce que je suis en vacances et que même si je ne l'étais pas, comme tu as dû lire dans d'autres discussions le forum et moi pour l'instant ça fait deux... mais bon comme c'est toi Wink )

Merci mais profite de ton repos quand même...

Bref, donc pour plus tard :

il s'agit de créer des fichiers dont le nom se distingue par la date et l'heure (y a bien l'idée de l'id mais je n'aime pas trop... enfin je dois surtout respecter une charte...) selon des informations d'une base de données.
chaque ligne de la base correspond à un fichier.
donc pour chaque entrée je récupère l'heure en cours et je créé mon fichier.
Le programme fait ça bien et rapidement (avec Qt :D) mais le problème vient du fait que certains fichiers sont écrasés d'où ma question sur la résolution de l'heure avec Windows...

J'ai pas encore testé la fonction GetSystemTime indiqué je repasserai quand j'aurais testé... :wink:

Donc Fred retourne faire trempette :lol:

fredericmazue

Quote:
chaque ligne de la base correspond à un fichier.

Mais dans ce cas, pourquoi ne pas nommer les fichiers d'après les entrées de la clef primaire de la table ?
Quote:
Donc Fred retourne faire trempette

Tu peux compter sur moi ;) L'eau est bonne en ce moment :D
K-lo

Effectivement c'est très sympatique comme fonction GetSystemTime mais j'ai tester quelque chose. j'ai bouclé autour de cette fonction toutes les 1 milliseconde Sleep(1);

Et à l'affichage j'ai 8 fois la même heure milliseconde près avant que cela change et les millisecodne se sont incrémentés de 16...

Quote:

milliseconde :
875 875 875 875
875 875 875 875
891 891....

Ma boucle :

while(1){
SYSTEMTIME t;
GetSystemTime(&t);
std::cout<<t.wMillisecondes<<std::endl;
Sleep(1);
}

Je sais qu'on est limité au temps d'exécution des instructions et que mon code est archaïque et complètement moche; mais je peux pas m'empeicher d'insister :P

Du coup j'ai l'impression de plus rien capté...
Bon vivement mes vacances comme pour toi Fred ;) donc on verra tout ceci plus tard

Pour ce qui est de l'histoire du problème avec la clé primaire comme identifiant unique j'ai réussit à faire changer mes restrictions :D

fredericmazue

Quote:
Bon vivement mes vacances comme pour toi Fred

Les vacances y a que ça de vrai, mais aujourd'hui il pleut, alors je viens faire une petite visite :)
Quote:
Et à l'affichage j'ai 8 fois la même heure milliseconde près avant que cela change et les millisecodne se sont incrémentés de 16...

Le problème de fond est qu'il n'y a aucune garantie de précision sur les timer Windows.
Si tu écris Sleep(1000) tu n'as aucune garantie que le délai soit d'une seconde juste. La garantie est plus contraire en fait. Et le résultat d"pend aussi de la charge du système. Si ça se trouve, en donnant Sleep(1) le fonction rend la main immédiatement :)
Tu ne peux pas te fier à ça.

Bon le soleil revient, alors je repars ;)

K-lo

Quote:
Le problème de fond est qu'il n'y a aucune garantie de précision sur les timer Windows.

:lol:
Sacré winwin

Alors c'est bon t'as répondu à toutes mes questions tu peux donc retourner trav... heu te reposer :lol: :P :wink: