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