Dimと型

DiscoversoftのWebサイト全般に関するお問い合わせはこちらへどうぞ。この他、コミュニティに付け加えてほしいカテゴリやフォーラム、機能など、コミュニティ運用に関するお問い合わせもこちらへ…
返信する
メッセージ
作成者
BingoMan
記事: 36
登録日時: 2005年7月17日(日) 09:36
お住まい: 千葉県松戸市

Dimと型

#1 投稿記事 by BingoMan »

C言語では

コード: 全て選択

int A,B;
とすると、A,Bともにint型になります。
しかしActiveBasicでは

コード: 全て選択

Dim A,B As String
としてもAがString型になりません。
このプログラムでもA,BともにString型になるようにしていただきたいです。
Mario2
記事: 205
登録日時: 2005年5月31日(火) 13:31
お住まい: 大阪市
連絡する:

Re: Dimと型

#2 投稿記事 by Mario2 »

コード: 全て選択

Dim A,B As String
> としてもAがString型になりません。
たしかこの場合、AはDouble型になっていると思います(確か、数字関係の関数だったような・・・)。

でも、確かに、上記のようにしてもAがString型になるようにして欲しいですね。(でも、昔から上記の使い方をしてプログラミングしている人には、後ろの書き方(型)によってはプログラムのバグを引き起こしてしまいそうですが・・・)
まぁ、上の書き方が、VBでも同じ動作((関数だけなら)何かの型になるの)なら、どうなんでしょうかね?(Cでは2つとも同じのになるみたいですけどね。)
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

Re: Dimと型

#3 投稿記事 by イグトランス »

> まぁ、上の書き方が、VBでも同じ動作((関数だけなら)何かの型になるの)なら、どうなんでしょうかね?(Cでは2つとも同じのになるみたいですけどね。)

> Dim A,B As String
たしかVB6までだとAは型が省略されたと扱われ、VB.Net以降だとString型になるのだったと思います。
たとえVB6まででもVBにはVariant型という何でもありの型があり、変数宣言でこのように型を省略したときにもこの型が使われるので、気づきにくいようです。
Variant型のないABでは問題にならないと思いますが。
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

Re: Dimと型

#4 投稿記事 by hira »

> たとえVB6まででもVBにはVariant型という何でもありの型があり、変数宣言でこのように型を省略したときにもこの型が使われるので、気づきにくいようです。
> Variant型のないABでは問題にならないと思いますが。

興味のある話題が出たので、VB6から入った人間からコメントさせていただきますと…
イグトランスさんの仰るとおり、VB6ではAは型が省略されたものとして扱われます。
しかし、正直バグの原因になりますよ(^^;
それにもかかわらず、(VBAを含めて)いい加減な本だったら平気で
Dim A,B As Long
のような書き方がされています(もちろん、AはVariantではLongになることを期待して書かれているのですが、VB6の仕様ではこれは間違いです)。

なお、ActiveBasicでは型省略はDouble型として扱われます。しかし、普通はDouble型変数を宣言するときも型省略などしないはずです(それより、Long型やString型で処理すべきところで型名を忘れてしまってハマることの方が多いです)。
例えば、
Dim A,B As String
ここで A="ActiveBasic" はアウトになります。AはDouble型だからです。
しかし、「省略したらDoubleになる」と知っている人がどれだけいるのかがそもそも疑問ですし、それを知らない人にとってはこれは難解な問題ということになってしまいます。
そのため、最初から型の省略をできないようにする、という手もありではないかと思いますが…。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

それって、こういう風に書いた時に・・・

#5 投稿記事 by konisi »

コード: 全て選択


Dim (A,B) As String
って言う表記にした時にAとBの両方がString型になるようにしてもらえばいいんじゃないかな?今のところこの書き方は使えないけど。<<AB4.10.01
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#6 投稿記事 by イグトランス »

Dim (A,B) As Stringよりは単に1行で1変数だけを宣言するスタイルを推奨すれば十分だと私は思います。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#7 投稿記事 by konisi »

確かにそうだが、どーも面倒なところがないだろうか。
返信する