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;