我试图保持1-10计数,如果计数超过10,则从1开始。
Tick := 5;
currentTick := 8;
现在FinalTick
将是CurrentTick + Tick,但是一旦值为10,它应该在1处进行统计,因此在这种情况下
5 + 8 = 3
我该怎么做?
答案 0 :(得分: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;
答案 1 :(得分:5)
我会使用所谓的模运算符(http://en.wikipedia.org/wiki/Modulo_operation)。
FinalTick:=(CurrentTick + Tick)mod 10;
答案 2 :(得分:3)
您应该使用模运算符,例如
Val:=(5+8) mod 10
答案 3 :(得分: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;