Else Ifの仕様

ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
返信する
メッセージ
作成者
Yoshi
記事: 27
登録日時: 2005年5月31日(火) 22:17
お住まい: 山口
連絡する:

Else Ifの仕様

#1 投稿記事 by Yoshi »

よくIf分の使用がわかっていないので間違っているかどうかわからないのですが、ちょっと混乱しているので書きます。

コード: 全て選択


Else If
というのはいったいどういう意味なのでしょうか?
今日も元気にABLife
淡幻星
記事: 183
登録日時: 2005年7月19日(火) 07:02
お住まい: 宮城県
連絡する:

Re: Else Ifの仕様

#2 投稿記事 by 淡幻星 »

よしくんさん さんが書きました:>

コード: 全て選択


> Else If
> 
> というのはいったいどういう意味なのでしょうか?
ElseIf が正しい書き方のようです。
Else If が一つ目だけ通るのは、たまたまだと思われます。

参考。
http://www.discoversoft.net/help_center ... and/If.htm
Yoshi
記事: 27
登録日時: 2005年5月31日(火) 22:17
お住まい: 山口
連絡する:

Re: Else Ifの仕様

#3 投稿記事 by Yoshi »

> ElseIf が正しい書き方のようです。
> Else If が一つ目だけ通るのは、たまたまだと思われます。

Else If
がたまたま通っていいんでしょうかね~?
ElseIfのつもりで使ってましたから。
もうひとつElse Ifをつけると、とおらなくなってしまい
「どこがおかしいんだー」と悩みデバックに時間がかかってしまいました。
今日も元気にABLife
淡幻星
記事: 183
登録日時: 2005年7月19日(火) 07:02
お住まい: 宮城県
連絡する:

複数回If文ネストでのElse If/ElseIfで前者は2回以降がエラー

#4 投稿記事 by 淡幻星 »

良くはないと思います。
本来なら「構文エラー」として弾くべきか、
そうでなけば複数のElse Ifにも対応すべきだとは思います。
ただ、C/C++でもelseifの記述ですし、ABもElseIfとしてヘルプファイルに
載ってますから…たまたま通る仕様なのだろうとあまり気にしてませんでした^^;
(他にも、End Ifとヘルプに載ってますがEndIfでも通るなどありますし。私は後者の記述が好きなので助かってます。)

でも、確かに引っかかるポイントではありますね。気づきにくいエラーです。


山本様へ。
If文の複数回ネストの際のElse If/ElseIfの両方への構文対応、
もしくは構文エラー表示の対応を、可能でしたらお願いいたします。
こうき
記事: 9
登録日時: 2005年12月06日(火) 15:53

Else IFの仕様

#5 投稿記事 by こうき »

こんにちは。こうきです。

二番目の間違いの文で4行目のEnd Ifをとると通るみたいなんですがこれはどういうことでしょうか?
余計わからなくなってしまいそうですが解決の参考になればと思います。
Pizz

#6 投稿記事 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があまる!!!
Pizz

#7 投稿記事 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があまる!!!
山本
Site Admin
記事: 535
登録日時: 2005年5月30日(月) 15:08
連絡する:

#8 投稿記事 by 山本 »

淡幻星 さんが書きました:本来なら「構文エラー」として弾くべきか、
そうでなけば複数のElse Ifにも対応すべきだとは思います。
そうですね。現状の"Else If"は構文エラーとしてはじかれず、わかり辛いバグとなって現れる傾向が強いようです。

次回のバージョンアップでは、"Else If" を有効にしますので、ご了承ください。
返信する