我想在Delphi中制作一个倒数计时器。我用了
while(t<>0 and m<>0 and s<>0) do
但该计划并不接受。我该如何解决这个问题?
答案 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
这是一个明确的语法错误。
此处记录了优先顺序:
答案 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;