[ C++ ] reecrire une ligne en console

reecrire une ligne en console [ C++ ] - C++ - Programmation

Marsh Posté le 18-03-2004 à 12:41:00    

Est-ce possible de reecrire par dessus une ligne existante en console, par exemple pour afficher un % de progression ?
 
Si oui, comment ? Ou bien quels indices chercher sur google ?


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 18-03-2004 à 12:41:00   

Reply

Marsh Posté le 18-03-2004 à 12:45:04    

Indice -> codes ASCII de CR et LF peut etre.

Reply

Marsh Posté le 18-03-2004 à 12:45:51    

bof
 
avec \r tu peux portablement n'effacer qu'un seul caractere
 
par contre ça c'est bien
http://boost.org/libs/timer/timer.htm

Reply

Marsh Posté le 18-03-2004 à 12:46:06    

xterminhate a écrit :

Indice -> codes ASCII de CR et LF peut etre.

heink ?

Reply

Marsh Posté le 18-03-2004 à 12:50:28    

xterminhate a écrit :

Indice -> codes ASCII de CR et LF peut etre.


Je vois mal en quoi une terminaison de ligne va m'ettre utile ici  :??:


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 18-03-2004 à 12:57:03    

ciler a écrit :


Je vois mal en quoi une terminaison de ligne va m'ettre utile ici  :??:  


 
Par définition :
 
(CR ASCII 13) The character which causes the cursor to move to the left margin, often used with line feed (LF ASCII 10) to start a new line of output.  
 
CR is encoded in C and Unix as "\r".
 
T'as d'autres remarques "à la con" en reponse à mon indice ?
 
Cordialement,
   XteR.


Message édité par xterminhate le 18-03-2004 à 13:02:56
Reply

Marsh Posté le 18-03-2004 à 13:04:17    

xterminhate a écrit :


T'as d'autres remarques "à la con" en reponse à mon indice ?


Ou vois tu une remarque a la con ?  :sweat:  
 
Tu me donnes un indice, je cherche un peu, trouve que cela correspond a de la terminaison/saut de ligne (recherche incomplete apparement). Du coup je te demande plus de precisions. Je n'avais aucunement l'idee de faire une remarque a la con.


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 18-03-2004 à 19:16:29    

En effet, c'etait déplacé de ma part. Mon indice t'a t il permis de résoudre ton pb ?
 
Cordialement,
   XteR.

Reply

Marsh Posté le 18-03-2004 à 20:03:49    

ASCII 8 --> backspace

Reply

Marsh Posté le 18-03-2004 à 20:21:56    

ciler a écrit :

Est-ce possible de reecrire par dessus une ligne existante en console, par exemple pour afficher un % de progression ?
 
Si oui, comment ? Ou bien quels indices chercher sur google ?


J'ai fait ce genre de barre de progression est ça marche assez bien je ne suis pas sur que ce soit très fiable.
 
J'ai simplement utilisé le caratère '\r' pour revenir au début de la ligne.
 

Code :
  1. fprintf(stdout, "..." );
  2. for ...
  3. {
  4.   traitement ...
  5.   fprintf(stdout, "\r[%-50s]", chaine);
  6. }


chaine est composée de n '#' (entre 0 et 50 dans l'exemple que je donne.
 
Mais il faut faire attention à la largeur de la console, si elle fait moins de 50 caractères tu auras des problèmes d'affichage.
 
Il faut faire aussi attention au rafraichissement. Il faut éviter de la faire trop souvent.

Reply

Marsh Posté le 18-03-2004 à 20:21:56   

Reply

Marsh Posté le 21-03-2004 à 20:54:41    

Personnellement je le fais comme ça.. exemple d'une boucle infinie de créations de tableaux :
 

Code :
  1. while(1)
  2.    {
  3.    new int[5000] ;
  4.    cpt++ ;
  5.    cout << '\r' << cpt << " Tableaux crees" ;
  6.    }


 
Le \r revient au début de la ligne  et ça affiche le compteur en constante augmentation.

Reply

Marsh Posté le 22-03-2004 à 12:14:14    


 
 
Essayez, c'est vraiment très bien et propre comme solution :
 


0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
************************************


Message édité par Evadream -jbd- le 22-03-2004 à 12:14:32
Reply

Marsh Posté le 22-03-2004 à 12:28:16    

darkoli a écrit :


Mais il faut faire attention à la largeur de la console, si elle fait moins de 50 caractères tu auras des problèmes d'affichage.
 


 
On peut observer ce bug dans les versions françaises de Windows 2000 quand une analyse du disque est planifiée au démarrage : il met un décompte disant qu'on peut l'annuler dans les dix secondes. En anglais la phrase colle sur les 80 caractères mais pas en français :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed