2017-01-30 146 views
2

我想模擬免費帕斯卡的進度加載狀態,但我很難實現看起來像加載進度狀態的輸出。 代碼中,我有這樣的:帕斯卡進展狀態

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

但輸出原來是這樣的:

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

當我希望它看起來像這樣:

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

我只想在循環中改變的百分比變量。我已經看過刪除和插入程序,但我不認爲這是我正在尋找。

+1

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

+0

有非常相似,這對codegolf的問題。這裏是我的[answer](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)在沒有換行符(LF)的情況下寫回車符(CR):'寫(#13); Write('(',percent,'%)');'2)使用[VT100 Escape sequences](http://ascii-table.com/ansi-escape-sequences-vt-100.php)'Write(# 27 '[5D'); {將光標向左移動5個位置}寫('(',percent,'%)');'PS:不確定它與Windows CMD兼容。 PPS:您可以使用'SysUtils'單元中的'Sleep'而不是'Crt'中的'Delay'。 – Abelisto