2012-07-21 48 views
2

我試圖保持1-10計數,如果計數達到了10它在1如何重新開始計數

Tick := 5; 
currentTick := 8; 

現在FinalTick開始回將是CurrentTick +蜱但一旦值是10,應該在1 STAT超過因此在這種情況下

5 + 8 = 3

如何做呢?

回答

5

如果你想指望成爲0,1,2,3,4,5,6,7,8,9,0,1,2,3,4等,您可以:

procedure IncCount(var ACount: Integer); 
begin 
    ACount := (ACount + 1) mod 10; 
end; 

如果你想指望成爲1,2,3,4,5,6,7,8,9,10,1,2,3,4等,您可以:

procedure IncCount(var ACount: Integer); 
begin 
    ACount := ACount mod 10 + 1; 
end; 
+0

由於從未聽說過這個模運算 – 2012-07-21 15:11:43

5

我會使用所謂的模運算符(http://en.wikipedia.org/wiki/Modulo_operation)。 FinalTick:=(CurrentTick + Tick)mod 10;

FinalTick:=(CurrentTick + Tick)mod 10;

+0

「如果算上越過10它開始回到1」 所以加*如果FinalTick = 0,則FinalTick:= 10 ; * – 2012-07-23 14:46:06

3

你應該使用模運算符,如

Val:=(5+8) mod 10 
2

MOD運算符是一個解決方案,這裏的大多數答案。

有時候,這可能會有幫助:

procedure Foo; 
var I: Integer; 
begin 
    I := 0; 
    repeat 
    I := I + 1; 
    // Do your stuff here 
    ShowMessage(IntToStr(I)); 
    // Add some exit conition, like: 
    // if (..) then break; 
    if I = 10 then I := 0; 
    until False; 
end;