IF-ELSE具有多个IF

时间:2014-06-03 11:37:01

标签: delphi

我正在尝试对某些值进行多次检查,但我无法让它工作。

if DerobModel.HouseProperties.IntValue['VolumeNorth'] = 1 then
    ivol[2] := 1;
  else
  if DerobModel.HouseProperties.IntValue['VolumeEast'] = 1 then
    ivol[2] := 1;
  end
  else
  if DerobModel.HouseProperties.IntValue['VolumeWest'] = 1 then
  ivol[2]:=1;

  end;

我想检查“VolumeNorth”是否为1,然后指数ivol [2]将为1,否则如果East为1,则ivol [2]应为1,如果不是,则检查对于West而言也是对于South(这还不在代码中)。如果它们都不是1那么ivol就不会发生任何事情[2]。我如何让它工作?

谢谢!

2 个答案:

答案 0 :(得分:6)

为什么不使用布尔

if (DerobModel.HouseProperties.IntValue['VolumeNorth'] = 1) or
   (DerobModel.HouseProperties.IntValue['VolumeEast'] = 1) or
   (DerobModel.HouseProperties.IntValue['VolumeWest'] = 1) or
   (DerobModel.HouseProperties.IntValue['VolumeSouth'] = 1) then
  ivol[2] := 1;

如果 任何 的音量(北,东,西,南)1设为ivol[2]1;如果没有任何卷等于1,则不会发生任何事情(请注意, 没有 else阻止

答案 1 :(得分:3)

德米特里的回答适合您的情景。为了清晰代码,我还提倡将BEGIN和END与所有IF语句一起使用。然后它可以帮助您更好地理解您的程序流程。

if DerobModel.HouseProperties.IntValue['VolumeNorth'] = 1 then
begin
  ivol[2] := 1;
end
else if DerobModel.HouseProperties.IntValue['VolumeEast'] = 1 then
begin
  ivol[2] := 1;
end
else if DerobModel.HouseProperties.IntValue['VolumeWest'] = 1 then
begin
  ivol[2]:=1;
end;