none
VB5の構造体をVB2005の作法で書き換えると実行時にエラーになる RRS feed

  • 質問

  • VB6での以下の構造体を設定した場合、その構造体の配列変数d()に値を入れることができたのですが、VB2005では、実行時にan()の値代入時に『オブジェクトインスタンスの作成にはnewキーワードを使用します』とのエラーメッセージを出てしまいます。 

    以下にVB6とVB2005で記述した当該スクリプトを示します。 

    どなたかVB2005での対処法をお教えいただけませんでしょうか?

    Type rdn    'VB6での構造体の設定
        r As Double
        an(2) As Double
    End Type

    Global d(2) As rdn

    d(0).r = 1.0
    d(0).an(0) = 2.0
    d(0).an(1) = 3.0
    d(1).r = 0.0
    d(1).an(0) = 1.0
    d(1).an(1) = 2.0
    VB6では問題なく実行できる。

    上記スクリプトをVB2005の作法に書き換えVB2005で実行すると以下のエラーが発生してしまう。

    Structure rdn 'VB2005の場合
       Dim r As Double
       Dim an() As Double   
       Public Sub Initialize()
            ReDim an(2) 
       End Sub
    End Structure
    Public d(2) As rdn

    d.Initialize()      'rdn構造体のインスタンスを初期化 
    d(0).r = 1.0
    d(0).an(0) = 2.0  ’<-実行時にこの行で『オブジェクトインスタンスの作成にはnewキーワードを使用します』エラーが発生 
    d(0).an(1) = 3.0  
    d(1).r = 0.0
    d(1).an(0) = 1.0
    d(1).an(1) = 2.0

     

    2010年5月4日 2:10

回答

  •   Structure rdn 'VB2005の場合
        Dim r As Double
        Dim an() As Double
        Public Sub Initialize()
          ReDim an(2)
        End Sub
      End Structure
      Public d(2) As rdn
    
      d(0).Initialize()   'rdn構造体のインスタンスを初期化 
      d(0).r = 1.0
      d(0).an(0) = 2.0 '<-実行時にこの行で『オブジェクトインスタンスの作成にはnewキーワードを使用します』エラーが発生 
      d(0).an(1) = 3.0
      d(1).Initialize()   'rdn構造体のインスタンスを初期化 
      d(1).r = 0.0
      d(1).an(0) = 1.0
      d(1).an(1) = 2.0
    

    質問者の方が定義したStructureでは、↑のようにd(2)のそれぞれの要素のInitialize呼び出しが必要かと。

     


    http://blogs.wankuma.com/hatsune/
    • 回答としてマーク 山本春海 2010年5月7日 4:55
    2010年5月6日 2:59

すべての返信

  •   Structure rdn 'VB2005の場合
        Dim r As Double
        Dim an() As Double
        Public Sub Initialize()
          ReDim an(2)
        End Sub
      End Structure
      Public d(2) As rdn
    
      d(0).Initialize()   'rdn構造体のインスタンスを初期化 
      d(0).r = 1.0
      d(0).an(0) = 2.0 '<-実行時にこの行で『オブジェクトインスタンスの作成にはnewキーワードを使用します』エラーが発生 
      d(0).an(1) = 3.0
      d(1).Initialize()   'rdn構造体のインスタンスを初期化 
      d(1).r = 0.0
      d(1).an(0) = 1.0
      d(1).an(1) = 2.0
    

    質問者の方が定義したStructureでは、↑のようにd(2)のそれぞれの要素のInitialize呼び出しが必要かと。

     


    http://blogs.wankuma.com/hatsune/
    • 回答としてマーク 山本春海 2010年5月7日 4:55
    2010年5月6日 2:59
  • アドバイスありがとうございます。無事エラーを解除できました。

     

    2010年5月6日 14:17
  • こんにちは、ちょびたの父 さん。

    解決されたとのことで、初音玲 さんからの情報に、回答としてマークさせていただきました。初音玲 さん、ありがとうございました。
    いただいた情報で有効だったものには、回答としてマークしてみてくださいね。今後、このスレッドを見る方にも有効な情報が目に留まりやすくなりますので、よろしくお願いいたします。

    今後とも、フォーラムをよろしくお願いいたしますね。

    2010年5月7日 4:59