如何使用带有多个参数的while循环?

时间:2015-05-04 22:12:22

标签: delphi

我想在Delphi中制作一个倒数计时器。我用了

while(t<>0 and m<>0 and s<>0) do

但该计划并不接受。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

您需要的代码是:

while (t<>0) and (m<>0) and (s<>0) do

原因是Pascal优先级规则意味着在您的代码中,and尝试将其作为按位运算符绑定到它周围的整数。要使and在这里作为逻辑运算符运行,需要上面的parens。

你的表达是

t<>0 and m<>0 and s<>0

由于and的优先级高于<>,因此表达式被解释为:

t<>(0 and m)<>(0 and s)<>0

这是一个明确的语法错误。

此处记录了优先顺序:

Expressions (Delphi) | Operator Precedence

答案 1 :(得分:0)

您的功能内部根本不需要循环。这是因为您正在使用定时器,每个时间间隔调用一次。

你只需要递减像这样的变量

procedure TForm1.Timer1Timer(Sender: TObject) 
begin 
  Label1.Caption:=IntToStr(t)+':'+IntToStr(m)+':'+IntToStr(s); 
  if s > 0 then dec( s)
  else
  begin
    s := 59;
    if m>0 then dec(m)
    else
    begin
      m := 59;
      if t>0 then dec( t )
      else Label2.Caption:='it is done' 
    end;
  end;
end;