Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
6110 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  VC++ 6, pb avec time

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VC++ 6, pb avec time

n°488115
Giz
Posté le 15-08-2003 à 15:59:43  profilanswer
 

Soit le code suivant (VC++6, W98) :
 

Code :
  1. time (&start);
  2. /* Simulate calculations */
  3. FILE *f = fopen("D:\\difftime.txt","w+" );
  4. while (1) {
  5.  __try
  6.  {
  7.   //protect buffer with mutex
  8.   buf2Write->WriteBuffer();
  9.   buf2Read->ReadBuffer();
  10.   //copy buffer from to another buffer
  11.   CShared_buffer::CopyBuffer(((CSs_calc *)(buf2Read))->buffer, ((CSs_calc *)(buf2Write))->buffer);
  12.   for (unsigned long i = 0; i < (((CSs_calc *)(buf2Write))->buffer).bufSize; i++)
  13.    (((CSs_calc *)(buf2Write))->buffer).bufAddr[i] += 1;
  14.   time (&finish);
  15.   fprintf (f, "%lf\t%lf\n", difftime( finish, start ), finish);
  16.   fclose(f);
  17.   f = fopen("D:\\difftime.txt","a+" );
  18.    if (difftime( finish, start ) >= clock) {
  19.    logFile->WriteLogFile(buf2Write);
  20.    time(&start);
  21.   }
  22.  }


 
Je comprends pas pkoi la fonction en gras me renvoit tjs 0 :/
PS : j'ai le debug dans mon fichier "difftime.txt" :
la fonction renvoie tjs 0 SAUF ou rarement j'ai 1.000000
la variable finish vaut tjs 0.0000000
voici un extrait du contenu du fichier : :D


difftime()      finish
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
1.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000


La variable clock est un double de valeur 0.200000
Dans la MSDN l'exemple est pareil, jsuis maudit ?  :??:  
une idee ?  :sweat:


Message édité par Giz le 15-08-2003 à 17:59:23
mood
Publicité
Posté le 15-08-2003 à 15:59:43  profilanswer
 

n°488124
Tetedeienc​h
Head Of God
Posté le 15-08-2003 à 16:04:02  profilanswer
 

Oui, j'ai une idée.
 
J'avais eu le meme probleme que toi, et je l'avais résolu assez bizarrement.
 
Apres avoir chopé le start, copie la valeur de start dans une autre variable... et compare la valeur copiée avec celle de finish.
 
je ne sais pas pourquoi, mais il me semble que time renvoyait son résultat tjs a la meme adresse, ce qui faisait que les valeurs étaient écrasées.
 
Attention, je sors  peut etre ( surement ) une connerie, mais je suis quasi sur d'avoir eu un probleme similaire en essayant de timer l'execution de mon prog résal...
 
Affiche start et finish, tu verras, elles ont la meme valeur a coup sur, si tu les affiche apres time(&finish)


Message édité par Tetedeiench le 15-08-2003 à 16:04:40
n°488130
Giz
Posté le 15-08-2003 à 16:06:37  profilanswer
 

tetedeiench a écrit :

Oui, j'ai une idée.
 
J'avais eu le meme probleme que toi, et je l'avais résolu assez bizarrement.
 
Apres avoir chopé le start, copie la valeur de start dans une autre variable... et compare la valeur copiée avec celle de finish.
 
je ne sais pas pourquoi, mais il me semble que time renvoyait son résultat tjs a la meme adresse, ce qui faisait que les valeurs étaient écrasées.
 
Attention, je sors  peut etre ( surement ) une connerie, mais je suis quasi sur d'avoir eu un probleme similaire en essayant de timer l'execution de mon prog résal...
 
Affiche start et finish, tu verras, elles ont la meme valeur a coup sur, si tu les affiche apres time(&finish)


 
OK, je test  :jap: mais dans le debuggeur, la variable finish evolue bien pourtant c "strange" :/


Message édité par Giz le 15-08-2003 à 16:15:38
n°488148
Giz
Posté le 15-08-2003 à 16:19:20  profilanswer
 

Nop, en fait ca marche pas :D, mais qu'est ce que c que ce binz ?  :??:

n°488160
Giz
Posté le 15-08-2003 à 16:29:54  profilanswer
 

c zarb, dans le test, la fonction me renvoie -1, et ds le fichier difftime.txt c tjs pareil

n°488164
antp
Super Administrateur
Champion des excuses bidons
Posté le 15-08-2003 à 16:33:28  profilanswer
 

sujet a écrit :

Un probleme, encore un... ;)



 
Un titre foireux, encore un ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°488166
Giz
Posté le 15-08-2003 à 16:44:43  profilanswer
 

antp a écrit :


 
Un titre foireux, encore un ;)


 
Ouai, ben jsais pas koi mettre, je pensais a "temps reel", t'a une meilleure idee ?? :D

n°488170
Giz
Posté le 15-08-2003 à 16:50:46  profilanswer
 

Voila un otre extrait du fichier difftime.txt en remplacant fprintf avec celui ci :
 

Code :
  1. fprintf (f, "%lf\t%lf\t%lf\n", start, finish, difftime( finish, start ));


 

start      finish       difftime(finish, start)
0.000442 0.000000 -0.000000
0.000442 0.000000 -0.000000
0.000442 0.000000 -0.000000
0.000442 0.000000 -0.000000
0.000442 0.000000 -0.000000
0.000442 0.000000 -0.000000
0.000442 0.000000 -0.000000
0.000442 1.000000 -0.000000
0.000442 0.000000 -0.000000
0.000442 0.000000 -0.000000


Message édité par Giz le 15-08-2003 à 16:52:12
n°488178
schnapsman​n
Zaford Beeblefect
Posté le 15-08-2003 à 17:16:05  profilanswer
 

giz a écrit :


 
Ouai, ben jsais pas koi mettre, je pensais a "temps reel", t'a une meilleure idee ?? :D


 
je suggère "VC++ 6, pb avec time", c'est pourtant pas dur de faire un titre correct  :)


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°488216
Taz
bisounours-codeur
Posté le 15-08-2003 à 17:56:38  profilanswer
 

je déplace sur C ... sauf l'infame saloperie de __try, c'est du C
edit: et y aussi ces infâmes objets... les mecs faites un effort :pfff:  
 
si vous y tenez pas, je vous montre comment on fait de l'obejt avec  une synthaxe à peu près pareil de C++
 

Code :
  1. buf2Write->WriteBuffer(&buf2Write);

c'est faisable en C


Message édité par Taz le 15-08-2003 à 18:01:24
mood
Publicité
Posté le 15-08-2003 à 17:56:38  profilanswer
 

n°488233
Taz
bisounours-codeur
Posté le 15-08-2003 à 18:17:54  profilanswer
 

ben les types time_t sont entiers, donc de granularité 1.
 
edit: toutes ces erreurs auraient en partie pu être eviter avec la sécurité de typage des stream C++


Message édité par Taz le 15-08-2003 à 18:30:26
n°488247
HelloWorld
Salut tout le monde!
Posté le 15-08-2003 à 18:34:15  profilanswer
 

Citation :

si vous y tenez pas, je vous montre comment on fait de l'obejt avec  une synthaxe à peu près pareil de C++


 
Je m'y suis intéressé un moment et j'ai quelques bons liens la dessus (heritage, fonctions virtuelles, ...). Mais ca mérite un post à lui tout seul.

n°488635
VisualC++
J'va y penser ...
Posté le 16-08-2003 à 11:49:07  profilanswer
 

Avant de sortir un truc VC++ ou autre compilo a un pb avec time, faudrait lire la doc de time et difftime
 
Tes var semble etre de type float vu ton print, alors que time retourne des long (time_t)
C comme ton test, difftime retourne un double certe mais c un nombre de seconde niveau granularite, donc un 6.0f niveau printf, les chiffres apres la virgule c juste des erreurs d arrondi.
 
Donc d abord indique tes types, et apres regarde ou tu fais des conversions qui foute la grouille


Message édité par VisualC++ le 16-08-2003 à 11:52:57
n°488641
Taz
bisounours-codeur
Posté le 16-08-2003 à 11:51:06  profilanswer
 

Citation :

difftime retourne des long

 
 

Citation :

difftime retourne un double certe

 
 
 :heink:  
 
sinon, moi comme d'hab, je poste du vent

n°488644
VisualC++
J'va y penser ...
Posté le 16-08-2003 à 11:52:42  profilanswer
 

desole j ai pas tout lu :p
 
et je corrige c un double difftime :o (me manque un cafe pour etre reveille)

n°488647
Taz
bisounours-codeur
Posté le 16-08-2003 à 11:55:46  profilanswer
 

VisualC++ a écrit :

desole j ai pas tout lu :p

même remarque qu'aux autres: faut arrêter d'être désolé et faut lire le sujet

n°488651
VisualC++
J'va y penser ...
Posté le 16-08-2003 à 12:00:32  profilanswer
 

Bah des que ca derive je lis plus mais bon je vois pb avec time et ca arrive sur comment faire de l objet avec du C (bon ok son code est infame te l accorde), et la je switch et j ai switch ton second message ca arrive.
 
Ferais attention j essayerais :)
 
Donc sorry pour avoir dit ce que tu as dit juste au dessus.

n°488697
Tetedeienc​h
Head Of God
Posté le 16-08-2003 à 13:01:00  profilanswer
 

Et entre nous, n'en déplaiser a taz, tant que ca mmarche, on a pas tous besoin d'avoir un code aux petits oignons a la mode uniquement C ou C++ ...
 
En l'occurence le monsieur il veut que sont ime marche, et tes remarques sur la progrmmation objets, je crois qu'il n'en a que foutre, et entre nous, tu m'aurai fait une telle remarque totalement a coté de la plaque, je l'aurai mal pris.
 
A bon entendeur...

n°488700
Taz
bisounours-codeur
Posté le 16-08-2003 à 13:03:30  profilanswer
 

1) ça marche pas
2) s'il avait ecrit en C++ avec les bibliothèques qui vont avec, il aurait pas eu ce genre de problème
3) le C++ est un langage objet, rien d'à côté de la plaque. giz en est pas à son premier post avec son programme, je sais de quoi il en retourne

n°488717
Tetedeienc​h
Head Of God
Posté le 16-08-2003 à 13:54:56  profilanswer
 

Bref, je perds mon temps a  discuter de ca avec toi.
 
J'abandonne.

n°490057
Giz
Posté le 18-08-2003 à 10:46:42  profilanswer
 

VisualC++ a écrit :

Avant de sortir un truc VC++ ou autre compilo a un pb avec time, faudrait lire la doc de time et difftime
Tes var semble etre de type float vu ton print, alors que time retourne des long (time_t)
C comme ton test, difftime retourne un double certe mais c un nombre de seconde niveau granularite, donc un 6.0f niveau printf, les chiffres apres la virgule c juste des erreurs d arrondi.
 
Donc d abord indique tes types, et apres regarde ou tu fais des conversions qui foute la grouille


 
Merci mais je sais y regarder quand j'ai un pb ! : j'ai meme tester leur exemple identique au mien et ca marche pas !
voila la declaration de mes variables :  
 

Code :
  1. time_t   start, finish;
  2. double clock, elapsed_time;


 
et un autre fprintf si vous voulez :
 

Code :
  1. fprintf (f, "%g\t%g\t%6.0f\n", start, finish, difftime( finish, start ));


 
avec extrait de fichier :
 

0.000505819 1     -0
0.000505819 0     -0
0.000505819 0     -0
0.000505819 0     -0
0.000505819 0     -0
0.000505819 0     -0
0.000505819 0     -0
0.000505819 0     -0
0.000505819 0     -0

n°490061
Giz
Posté le 18-08-2003 à 10:49:47  profilanswer
 

Taz a écrit :

1) ça marche pas
2) s'il avait ecrit en C++ avec les bibliothèques qui vont avec, il aurait pas eu ce genre de problème
3) le C++ est un langage objet, rien d'à côté de la plaque. giz en est pas à son premier post avec son programme, je sais de quoi il en retourne


 
Pour mon ptit programme le C fais tres bien l'affaire, pas besoin que j'inclus de grosse bibliotheque que je ne connais meme pas

n°490089
Taz
bisounours-codeur
Posté le 18-08-2003 à 11:02:00  profilanswer
 

1) on est cat C++
2) fprintf (f, "%g\t%g\t%6.0f\n", start, finish, difftime( finish, start ))
 
ne marche pas à cause des types alors que
 
f << start << '\t' << finish << '\t'
  << difftime(finish, start) << '\n';
 
fonctionne tout seul (à la mise en forme près)
 
t'en entrain de rame pour des conneries. conneries qui ne sont plus possible avec les stream C++
 
apères tu fais comme tu veux: soit tu fais comme on te dit, soit t'arretes de nous les briser par ce que t'es pas capable de lire la doc et de trouver le format de printf qui va.

n°490095
Giz
Posté le 18-08-2003 à 11:08:14  profilanswer
 

bon ben j'ai mis un autre type qui te plait cette fois :
 

Code :
  1. fprintf (f, "%ld\t%ld\t%f\n", start, finish, elapsed_time);


 
...et ca marche ;)...bon merci  Mr le susceptible :jap:


Message édité par Giz le 18-08-2003 à 11:09:26
n°490096
VisualC++
J'va y penser ...
Posté le 18-08-2003 à 11:08:45  profilanswer
 

Giz > tu persistes a vouloir afficher des doubles alors que c des entiers les 2 premieres valeurs.
 
Efin tout comme Taz, j abandonne te laissant croire que tu lis correctement les man/docs
 
Ps : l exemple de MS sur MSDN (enligne ou pas) me semble pas qu'il font un print de start/stop ;)

n°490097
VisualC++
J'va y penser ...
Posté le 18-08-2003 à 11:09:49  profilanswer
 

giz a écrit :

bon ben j'ai mis un autre type qui te plait cette fois :
 

Code :
  1. fprintf (f, "%ld\t%ld\t%f\n", start, finish, elapsed_time);


 
...et ca marche ;)...bon merci  Mr le susceptible :jap:


 
Ah tient le bon type .. comme koi la doc avait raison ;)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  VC++ 6, pb avec time

 

Sujets relatifs
Time Format [Resolu][VBA - Access] Récupérer une Date à partir d'une Date Time
[mysql] additionner date et time pour obtenir datetimeRun-Time Check Failure #2 : C quoi??
Urgent H-10 Mn : Range sous Excel (Time is bientot up)Passer d'un TIME en DATETIME ?
Fonction time en C ?[PHP/MySQL]Probleme avec un champ TIME
Pb avec fonction time()[PHP] Pb avec time()
Plus de sujets relatifs à : VC++ 6, pb avec time


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)