アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB6の初心者です。ごく初歩的な問題でお恥ずかしいのですが困っています。

標準モジュール内にある以下のサブルーチンを行わせるために、

Sub Transform(NumSamples As Long, RealIn() As Double, ImageIn() As Double, RealOut() As Double, ImagOut() As Double, Optional InverseTransform As Boolean = False)

(NumSamples、RealIn()、ImageIn()は入力値)
(RealOut()、ImagOut()は戻り値)
...
...

End Sub

フォームモジュール内で以下のようにコールすると、

Private Sub cmdStart_Click()
Dim A as Long
Dim B(10000) as Double
Dim C(10000) as Double
Dim D(10000) as Double
Dim E(10000) as Double
...
(A,B,Cに数値入力)
...
Call Transform(A, B(), C(), D(), E(), False)
End Sub

で実行すると、変数D()に対して「コンパイルエラー:型が一致しません:配列またはユーザ定義型を指定してください」が出ます。なお、配列は10000まで宣言していますが実際には0~4096を使っています。

変数型は合わせているはずなのになぜエラーになるのでしょうか。D(),E()の型宣言をPublicにして標準モジュール内に入れたり、いろいろやってみたつもりですがうまくいきません。

よろしくお願いします。

A 回答 (1件)

回答ではないのですが、


試しにVB6 SP4で下記のコードを書いて実行してみましたが、正常に動作しました。
このソースでも同じエラーが出ますか?
もしエラーにならなければ、宣言の方法や構造以外の問題だと思います。

== Form1のcmdStartボタンイベント ============-
Private Sub cmdStart_Click()
  Dim A As Long
  Dim B(10000) As Double
  Dim C(10000) As Double
  Dim D(10000) As Double
  Dim E(10000) As Double

  A = 4096

  For i = 0 To (A - 1)
    B(i) = i
    C(i) = i
  Next

  Call Transform(A, B(), C(), D(), E(), False)
 
  For i = 0 To (A - 1)
    Debug.Print D(i)
    Debug.Print E(i)
  Next

End Sub
==============================================


== Module1のTransform()関数 ==================
Sub Transform( _
  NumSamples As Long, _
  RealIn() As Double, ImageIn() As Double, _
  RealOut() As Double, ImagOut() As Double, _
  Optional InverseTransform As Boolean = False)

  For i = 0 To (NumSamples - 1)
    RealOut(i) = RealIn(i)
    ImagOut(i) = ImageIn(i)
  Next

End Sub
==============================================
    • good
    • 0
この回答へのお礼

わざわざテストまでしていただき感謝です!
早速試してみたいと思います。
ありがとうございました。

お礼日時:2006/04/16 01:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!