Delphi 使用;mod";操作人员

Delphi 使用;mod";操作人员,delphi,math,integer,modulo,Delphi,Math,Integer,Modulo,每当我需要在for循环中执行某个操作时,我会尝试每300次迭代显示一次(有意义吗?) 以下是我想做的代码,但不是我想做的方式: for I := 0 to 2000 do Begin if I = 300 then DoAnAction; if I = 600 then DoAnAction if I = 900 then DoAnAction if I = 1200 ......... Same action all over, but I

每当我需要在
for
循环中执行某个操作时,我会尝试每300次迭代显示一次(有意义吗?)

以下是我想做的代码,但不是我想做的方式:

for I := 0 to 2000 do
  Begin
   if I = 300 then
   DoAnAction;

   if I = 600 then
   DoAnAction

   if I = 900 then
   DoAnAction

   if I = 1200 ......... Same action all over, but I don't want to check all those conditions!
  End;
所以我被告知要使用
mod
操作符,我就是这样做的:

for I := 0 to 2000 do
 Begin
  if I mod 300 = 299 then
  DoAnAction;
 End;
然而,使用上述片段的结果将在299599899处执行操作

我怎样才能在300、600、900。。。。。。使用Mod操作符?(如果I mod 300=300,则执行
操作不起作用)


谢谢

mod
运算符返回除法的其余部分。因此,如果您希望每300次迭代执行一次,请使用
i mod 300=0

I mod 300=300
没有意义,因为不能用300除法,剩下的是300

for I := 0 to 2000 do
 Begin
  if (I mod 300 = 0) and (I > 0) then
    DoAnAction;
 End;
虽然您以前的版本也有意义,但I=299是第300次通过;)

编辑:
I mod 300=300
将不起作用,因为
mod
运算符返回除法的剩余部分,根据定义,除法的剩余部分将在范围
0..299
使用以下方法:

if i mod 300 = 0
模运算符返回除法的余数

这里有一个例子来帮助你。在空白的新表单上放置一个TMemo,并将其放入
FormCreate
evemt:

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
const
  Output = 'i mod %d = %d';
begin
  Memo1.Clear;
  for i := 0 to 10 do
    Memo1.Lines.Add(Format(Output, [i, i mod 5]));
end;
运行它,查看备忘录中的输出。

尝试
(i0)和((iMod 300)=0)

procedure TForm1.按钮1点击(发送方:TObject);
变量
i:真实的;
开始
i:=strtofloat(edit1.Text);
如果我mod 5=0,那么
开始
标签1.标题:=“5”;
结束
其他的
开始
标签1.标题:='imk 5';
结束;

结束

0模300=300模300=0。i mod n在[0..n-1]范围内。哇,答案太多了!嗯,我想第一个得到了分数。给最好的打勾,而不是出现的那个fastest@David-你推荐哪一个?@David-我在这里惹恼了很多人,这就是为什么我先问专家。
mod
返回除法的其余部分。不能用
x
除法,只留下
x
的其余部分。难道没有传闻说在使用
运算符时,最有可能返回false的条件检查应该首先检查吗?在这个片段中,I>0几乎每次都是真的。当然,在这种情况下,这并不重要,因为它不会花很长时间来检查,但再一次,我只是无意中听到了。如果我错了,请纠正我。:)我没想到会有这样的优化,当然交换支票会更有意义。我应该编辑我的答案吗?:)@克罗姆-嗯,我得到了我需要的,但如果其他人发现这个问题有用,这可能是个好主意。:)@杰夫:如果你担心这样的优化水平,就不要担心。相反,将循环从
1改为运行到2000
,当计数器为
0
@Ken时,循环永远无法运行-我不担心,只是想确保我的回答是正确的:p此贡献似乎不是对所问问题的回答。如果您有新问题,请点击以下链接:。