ページ 1 / 1
Else Ifの仕様
Posted: 2006年1月30日(月) 13:34
by Yoshi
よくIf分の使用がわかっていないので間違っているかどうかわからないのですが、ちょっと混乱しているので書きます。
というのはいったいどういう意味なのでしょうか?
このコード [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]
コード: 全て選択
'正しい
If FALSE Then
Else If FALSE Then
End If
'間違い
If FALSE Then
Else If FALSE Then
Else If TRUE Then
Endif
'間違い
If FALSE Then
Else If FALSE Then
Else If TURE Then
End If
End If
End If
'参考
'正しい
If FALSE Then
Elseif FALSE Then
Elseif TRUE Then
End If
'正しい
If FALSE Then
Else
If FALSE Then
Else
If TRUE Then
End If
End If
End If
Re: Else Ifの仕様
Posted: 2006年1月30日(月) 17:48
by 淡幻星
よしくんさん さんが書きました:>
> というのはいったいどういう意味なのでしょうか?
ElseIf が正しい書き方のようです。
Else If が一つ目だけ通るのは、たまたまだと思われます。
参考。
http://www.discoversoft.net/help_center ... and/If.htm
Re: Else Ifの仕様
Posted: 2006年1月31日(火) 10:11
by Yoshi
> ElseIf が正しい書き方のようです。
> Else If が一つ目だけ通るのは、たまたまだと思われます。
Else If
がたまたま通っていいんでしょうかね~?
ElseIfのつもりで使ってましたから。
もうひとつElse Ifをつけると、とおらなくなってしまい
「どこがおかしいんだー」と悩みデバックに時間がかかってしまいました。
複数回If文ネストでのElse If/ElseIfで前者は2回以降がエラー
Posted: 2006年1月31日(火) 11:02
by 淡幻星
良くはないと思います。
本来なら「構文エラー」として弾くべきか、
そうでなけば複数のElse Ifにも対応すべきだとは思います。
ただ、C/C++でもelseifの記述ですし、ABもElseIfとしてヘルプファイルに
載ってますから…たまたま通る仕様なのだろうとあまり気にしてませんでした^^;
(他にも、End Ifとヘルプに載ってますがEndIfでも通るなどありますし。私は後者の記述が好きなので助かってます。)
でも、確かに引っかかるポイントではありますね。気づきにくいエラーです。
山本様へ。
If文の複数回ネストの際のElse If/ElseIfの両方への構文対応、
もしくは構文エラー表示の対応を、可能でしたらお願いいたします。
Else IFの仕様
Posted: 2006年2月10日(金) 10:41
by こうき
こんにちは。こうきです。
二番目の間違いの文で4行目のEnd Ifをとると通るみたいなんですがこれはどういうことでしょうか?
余計わからなくなってしまいそうですが解決の参考になればと思います。
Posted: 2006年2月10日(金) 13:39
by Pizz
If ~ Then ~ という1行構文ができます
この場合、End Ifは必要ないことになっています。
書かれているソースは、1行構文として解釈されるものがあります
コード: 全て選択
'正しい
If FALSE Then
Else If FALSE Then
End If
'↓
If FALSE Then
Else If FALSE Then ~ 'Elseの1行構文
End If
'間違い
If FALSE Then
Else If FALSE Then
Else If TRUE Then
Endif
'↓
If FALSE Then '1行構文ではない(次にElseがあるので)
Else 'スペースがあるので分離
If FALSE Then '1行構文ではない(次にElseがあるので)
Else If TRUE Then ~ '1行構文
Endif
'!!!End Ifが足りない!!!
'間違い
If FALSE Then
Else If FALSE Then
Else If TURE Then
End If
End If
End If
'↓
If FALSE Then '1行構文ではない(次にElseがあるので)
Else 'スペースがあるので分離
If FALSE Then '1行構文ではない(次にElseがあるので)
Else 'スペースがあるので分離
If TURE Then ~ '1行構文
End If
End If
End If '!!!End Ifがあまる!!!
Posted: 2006年2月10日(金) 13:45
by Pizz
すみません。ちょっとインデントが変だったので直しました
こっちのほうがわかりやすいと思います
コード: 全て選択
'正しい
If FALSE Then
Else If FALSE Then
End If
'↓
If FALSE Then
Else If FALSE Then ~ 'ElseとIfの1行構文
End If
'間違い
If FALSE Then
Else If FALSE Then
Else If TRUE Then
Endif
'↓
If FALSE Then '1行構文ではない(次にElseがあるので)
Else '1行構文ではないので分離
If FALSE Then '1行構文ではない(次にElseがあるので)
Else If TRUE Then ~ 'ElseとIfの1行構文
Endif
'!!!End Ifが足りない!!!
'間違い
If FALSE Then
Else If FALSE Then
Else If TURE Then
End If
End If
End If
'↓
If FALSE Then '1行構文ではない(次にElseがあるので)
Else '1行構文ではないので分離
If FALSE Then '1行構文ではない(次にElseがあるので)
Else '1行構文ではないので分離
If TURE Then ~ '1行構文
End If
End If
End If '!!!End Ifがあまる!!!
Posted: 2006年2月13日(月) 02:24
by 山本
淡幻星 さんが書きました:本来なら「構文エラー」として弾くべきか、
そうでなけば複数のElse Ifにも対応すべきだとは思います。
そうですね。現状の"Else If"は構文エラーとしてはじかれず、わかり辛いバグとなって現れる傾向が強いようです。
次回のバージョンアップでは、"Else If" を有効にしますので、ご了承ください。