- PR -

VB6関連

1
投稿者投稿内容
はちみつガール
会議室デビュー日: 2002/01/31
投稿数: 15
投稿日時: 2003-11-21 22:12
どうしてもわからないことがあり、書き込みしました。
VB6にて以下のようなプログラムを作成したのですが、(1)のdegreeの部分で
「コンパイルエラー ByRef引数の型が一致しません」というエラーが出ました。
Private Sub D3_click()
Dim degree, min As Integer--(2)

  Call cal_DegMinSec(lat, degree, min, sec) --(1)
End Sub

Private Sub cal_DegMinSec(ByVal sec As Double, deg As Integer, min As Integer, sec As Integer)
・・
End Sub

そこで、(2)の部分を以下の(3)のように変更してコンパイルするとエラーが
発生しませんでした。
Private Sub D3_click()
Dim degree As Integer--(3)
Dim min As Integer--(3)

Call cal_DegMinSec(lat, degree, min, sec)
End Sub

Private Sub cal_DegMinSec(ByVal second As Double, deg As Integer, min As Integer, sec As Integer)
・・
End Sub

どうして上記のようなことが起こったのかが、わからなくて困っています。
ご存知の方いましたら、教えてください。



[ メッセージ編集済み 編集者: はちみつガール 編集日時 2003-11-21 22:11 ]
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2003-11-21 23:23
遅くまでご苦労さまです。

引用:

Dim degree, min As Integer


と書くと、Integerとして宣言されるのはminだけで、degreeには型が指定されていないのでVariant型になってしまいます。

2つの変数を1行で宣言するとしたら、
コード:

Dim degree As Integer, min As Integer


というように、1つ1つの変数に対して型を指定しなければなりません < めんどくさ。

[ メッセージ編集済み 編集者: たーぞう 編集日時 2003-11-21 23:24 ]
はちみつガール
会議室デビュー日: 2002/01/31
投稿数: 15
投稿日時: 2003-11-22 09:38
返事ありがとうございます。
.netではIntegerで両方扱われるので、同じ感覚でVB6もやっていました ~~;
VB6では、個別に宣言しないとだめなんですか。確かにめんどうくさいですね。
Junbow
ぬし
会議室デビュー日: 2002/01/24
投稿数: 373
お住まい・勤務地: saga.jp
投稿日時: 2003-11-27 09:39
 昔ながらの (Deftype ステートメント)をつかっちゃうってのは、いかがですか?
 サンプルも載っているので、VB6のヘルプを「defint」とかで検索してみてください(^^)
1

スキルアップ/キャリアアップ(JOB@IT)