2017-01-30 4 views
2

J'essaie d'émuler un statut de chargement progressif en pascal libre mais j'ai du mal à essayer d'obtenir une sortie qui ressemble à un statut de progression de chargement. Le code je dois pour cela est:Pascal Progress Status

percent := 0; 
Writeln('Loading'); 
Repeat 
Write('(',percent,'%)'); 
percent = percent + 1; 
Delay(50); 
Until percent > 100; 

Mais la sortie se révèle comme ceci:

Loading(0%)(1%)(2%) 

Quand je veux qu'il ressemble à ceci:

Loading(0%) -> Loading(1%) {The percent variable going up like a loading status} 

Je veux seulement le pourcentage de variable à changer dans la boucle. J'ai examiné les procédures de suppression et d'insertion, mais je ne pense pas que ce soit ce que je cherche.

+1

http://www.at.freepascal.org/packages/ncurses.html –

+0

Il y avait une question très semblable à celui sur codegolf. Voici ma [réponse] (http://codegolf.stackexchange.com/a/101344/5116) en pascal – hdrz

Répondre

3

Vous devez utiliser le retour arrière pour revenir en arrière et écrire. Comme si:

uses Crt; 
var percent: integer; 
begin 
    percent := 0; 
    Write('Loading '); 
    Repeat 
    Write('(',percent:3,'%)'#8#8#8#8#8#8); 
    percent := percent + 1; 
    Delay(50); 
    Until percent > 100; 
end. 
+0

Merci! Exactement ce que je cherchais – LeCarloVC

+0

@LeCarloVC Il existe aussi plusieurs techniques: 1) Ecrire le retour chariot (CR) sans saut de ligne (LF): 'Write (# 13); Write ('(', percent, '%)'); '2) Utiliser [Séquences d'échappement VT100] (http://ascii-table.com/ansi-escape-sequences-vt-100.php)' Write (# 27 '[5D'); {Déplace le curseur à gauche de 5 positions} Write ('(', percent, '%)'); 'PS: Pas sûr qu'il soit compatible avec Windows CMD. PPS: Vous pouvez utiliser 'Sleep' depuis l'unité' SysUtils' au lieu de 'Delay' depuis' Crt'. – Abelisto