Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 具有多个IFs的IF-ELSE_Delphi - Fatal编程技术网

Delphi 具有多个IFs的IF-ELSE

Delphi 具有多个IFs的IF-ELSE,delphi,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['V

我正在尝试对一些值进行多重检查,但无法使其工作

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;
我想检查“Volumenoth”是否为1,然后索引ivol[2]将为1,否则如果East为1,则ivol[2]应为1,如果不是,则检查West,也检查South(代码中还没有)。如果它们都不是1,那么ivol不会发生任何事情[2]。我怎样才能让它工作


谢谢

为什么不使用布尔值

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,则不会发生任何事情(请注意,存在
其他
块)

Dmitry的答案适合您的场景。为了代码的清晰性,我还主张在所有IF语句中使用BEGIN和END。然后,它可以帮助您更好地理解程序流程

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;

请不要引用不会编译的伪代码。它似乎会惹恼那些本来想帮忙的人。@MartynA你说的假代码是什么意思?这是非常合法的,但我的IF论点有点问题……有很多线索,这是假的<代码>else之前不允许使用code>,代码中还有一个额外的
结尾
。更重要的是,我不太擅长编程。我尝试了几种不同的方法,可能最终得到了我放在这里的代码。对不起,我所说的“假”并不是真的,因为你实际上已经成功编译了。如果您遇到的问题是您的代码无法编译,那么您的q应该包含编译器错误消息,并指出发生错误的位置。通常,只要注意到错误消息,就会准确地告诉您语法错误是什么。Wtf,我几乎可以肯定我以前尝试过这个,但它不起作用。现在可以了,非常感谢!如果你也能回答的话,我编辑了一个后续问题:)没关系,我想我还是找到了答案。谢谢你的帮助!欢迎使用堆栈溢出,用户。如果你找到了你的答案,并且是从这里发布的一个回复中找到的,那么将其标记为已接受的回复。如果您的解决方案不同,请将您的解决方案作为答案张贴在此处,以便其他人也可以学习。但请确保你的答案真的回答了你上面提出的问题。谢谢你们!我想我需要更多的检查,这就是为什么我不想使用or布尔值,因为我需要检查哪个卷是1:)