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 に答える