2

我试图保持 1-10 的计数,如果计数超过 10,它会从 1 开始

Tick := 5;
currentTick := 8;

现在FinalTick将是 CurrentTick + Tick 但一旦值为 10 它应该统计为 1 因此在这种情况下

5 + 8 = 3

我该怎么做呢?

4

4 回答 4

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;
于 2012-07-21T15:08:23.207 回答
5

我会使用所谓的模运算符(http://en.wikipedia.org/wiki/Modulo_operation)。

FinalTick := ( CurrentTick + Tick ) mod 10;

于 2012-07-21T15:09:54.853 回答
3

您应该使用模运算符,例如

Val:=(5+8) mod 10
于 2012-07-21T15:09:59.303 回答
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;
于 2012-07-21T15:16:36.027 回答