2017-01-30 21 views
2

フリーパスカルの進捗状況をエミュレートしようとしていますが、ロードの進行状況に似た出力を得るのが難しいです。パスカル進捗状況

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

しかし、出力は次のように判明: 私はこのために持っているコードがある

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

私はしたい:私は、それは次のようになりたい

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

ループ内で変化するパーセント変数。私は削除と挿入の手順を見てきましたが、私はそれが私が探しているものだとは思わない。

+1

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

+0

codegolfで、この非常によく似質問がありました。ここに私の[答え](http://codegolf.stackexchange.com/a/101344/5116)がパスカルである – hdrz

答えて

3

戻って上書きするには、バックスペースを使用する必要があります。これと同じように:

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

ありがとう!正確には私が探していたもの – LeCarloVC

+0

@LeCarloVCいくつかのテクニックもあります:1)ラインフィードなしのCR(キャリッジリターン)を書き込みます。 2)[VT100エスケープシーケンス](http://ascii-table.com/ansi-escape-sequences-vt-100.php) 'Write(#、%、 '% 27 '[5D'); {カーソルを5つ左に移動}( '('、%、 '%)'); 'PS:Windows CMDと互換性があるかどうかわからない。 PPS: 'Crt'の' Delay'の代わりに 'SysUtils'ユニットの' Sleep'を使うことができます。 – Abelisto