C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 構造体の動的配列の初期化


(過去ログ 91 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■54473 / inTopicNo.1)  構造体の動的配列の初期化
  
□投稿者/ DD (1回)-(2010/10/21(Thu) 18:17:40)

分類:[VB.NET/VB2005 以降] 

2010/10/21(Thu) 18:23:45 編集(投稿者)
VB6からVB2005へのコンバージョンを行っています。

構造体の動的配列の初期化について質問です。
自動アップグレードの際に「この構造体のインスタンスを初期化するには、"Initialize" を呼び出さなければなりません。」
というメッセージが出ていた為、どのように対応を行うか悩んでいます。


'構造体
Private Structure Array1
    Dim a() As Integer
    Dim b as Integer
    Public Sub Initialize()
        'UPGRADE_TODO: この構造体のインスタンスを初期化するには、"Initialize" を呼び出さなければなりません。
        ReDim a(10)
    End Sub
End Structure

Public Sub Main()
    Dim ary1() As Array1	'動的配列を宣言
    Dim W_RECCNT As Long	'SQLの件数

    ・・・(処理)・・・

    'SQLの件数を取得
    W_RECCNT = W_DYNASET.RecordCount

    ReDim ary1(W_RECCNT)

    ・・・(処理)・・・
End Sub


構造体の動的配列の初期化について参考になるサイトが見当たりませんでした。

この動的配列ary1()をInitializeメソッドにて初期化する場合の記述方法を教えていただきたいです。

よろしくお願いいたします。

引用返信 編集キー/
■54475 / inTopicNo.2)  Re[1]: 構造体の動的配列の初期化
□投稿者/ todo (62回)-(2010/10/21(Thu) 19:06:01)
> VB6からVB2005へのコンバージョンを行っています。

「VBマイグレーション」で検索すれば情報は沢山あるはずです。
http://oshiete.goo.ne.jp/qa/2743047.html

VB マイグレーションセンター
http://www.microsoft.com/japan/msdn/vstudio/vbrun/
引用返信 編集キー/
■54481 / inTopicNo.3)  Re[1]: 構造体の動的配列の初期化
□投稿者/ shu (116回)-(2010/10/22(Fri) 08:59:56)
No54473 (DD さん) に返信
> 構造体の動的配列の初期化について質問です。
> 自動アップグレードの際に「この構造体のインスタンスを初期化するには、"Initialize" を呼び出さなければなりません。」
> というメッセージが出ていた為、どのように対応を行うか悩んでいます。
VB2005の構造体では固定長の配列をフィールドに持つことが出来ません。なのでVB6で定義されていた固定長の
フィールドと等価な構造にするためInitializeメソッドが自動で作成されたものと思われます。


> 構造体の動的配列の初期化について参考になるサイトが見当たりませんでした。
>
> この動的配列ary1()をInitializeメソッドにて初期化する場合の記述方法を教えていただきたいです。
forループで配列の各要素に構造体のインスタンスを設定すれば良いです。Initializeはメソッドなので
作成したインスタンスに対し各々実行すればよいです。(〜.Initialize)
引用返信 編集キー/
■54487 / inTopicNo.4)  Re[2]: 構造体の動的配列の初期化
□投稿者/ DD (2回)-(2010/10/22(Fri) 10:43:11)
No54475 (todo さん) に返信
>>VB6からVB2005へのコンバージョンを行っています。
>
> 「VBマイグレーション」で検索すれば情報は沢山あるはずです。
> http://oshiete.goo.ne.jp/qa/2743047.html
>
> VB マイグレーションセンター
> http://www.microsoft.com/japan/msdn/vstudio/vbrun/

参考ページありがとうございます。見て学習したいと思います。
引用返信 編集キー/
■54488 / inTopicNo.5)  Re[2]: 構造体の動的配列の初期化
□投稿者/ DD (3回)-(2010/10/22(Fri) 10:51:33)
2010/10/22(Fri) 10:52:27 編集(投稿者)
No54481 (shu さん) に返信
> forループで配列の各要素に構造体のインスタンスを設定すれば良いです。Initializeはメソッドなので
> 作成したインスタンスに対し各々実行すればよいです。(〜.Initialize)

ご返信ありがとうございます。
この文章について質問なのですが、ソース上で記述すれば

    '構造体
    Private Structure Array1
        Dim a() As Integer
        Dim b As Integer
        Public Sub Initialize()
            'UPGRADE_TODO: この構造体のインスタンスを初期化するには、"Initialize" を呼び出さなければなりません。
            ReDim a(1)
        End Sub
    End Structure

    Public Sub Main()
        Dim ary1() As Array1    '動的配列を宣言
        Dim W_RECCNT As Long    'SQLの件数
        Dim W_CNT As Long    'カウンタ

        'SQLの件数を取得
        W_RECCNT = 2

        ReDim ary1(W_RECCNT)

        For W_CNT = 0 To W_RECCNT
            '初期化
            Select Case W_CNT
                Case 0
                    ary1(W_CNT).Initialize()
                    ary1(W_CNT).a(0) = 0
                    ary1(W_CNT).a(1) = 1
                    ary1(W_CNT).b = 2
                Case 1
                    ary1(W_CNT).Initialize()
                    ary1(W_CNT).a(0) = 3
                    ary1(W_CNT).a(1) = 4
                    ary1(W_CNT).b = 5
                Case Else
                    ary1(W_CNT).Initialize()
                    ary1(W_CNT).a(0) = 6
                    ary1(W_CNT).a(1) = 7
                    ary1(W_CNT).b = 8
            End Select
        Next

    End Sub

このような記述で合っていますか?私の知識不足で申し訳ありませんが、教えていただきたいです。

引用返信 編集キー/
■54491 / inTopicNo.6)  Re[3]: 構造体の動的配列の初期化
□投稿者/ shu (117回)-(2010/10/22(Fri) 11:16:25)
No54488 (DD さん) に返信

Longを使ってるのが気になりますが、質問の内容に対する記述はいいと思います。

Longを使うなら定数もLongを使った方がいいかと思います。
0 => 0L または 0& など
引用返信 編集キー/
■54494 / inTopicNo.7)  Re[3]: 構造体の動的配列の初期化
□投稿者/ 魔界の仮面弁士 (1887回)-(2010/10/22(Fri) 11:24:33)
No54488 (DD さん) に返信
> このような記述で合っていますか?
問題無いと思いますが、
 ary1(W_CNT).Initialize()
については、Case ブロックの中では無く Select Case の前に配置した方が良いかも。
引用返信 編集キー/
■54504 / inTopicNo.8)  Re[4]: 構造体の動的配列の初期化
□投稿者/ DD (4回)-(2010/10/22(Fri) 14:38:48)
No54491 (shu さん) に返信
> Longを使うなら定数もLongを使った方がいいかと思います。
> 0 => 0L または 0& など
Longを使う場合は末尾にLまたは&を付けるのが正しい書き方なのですね。
勉強になりました。

No54494 (魔界の仮面弁士 さん) に返信
> 問題無いと思いますが、
>  ary1(W_CNT).Initialize()
> については、Case ブロックの中では無く Select Case の前に配置した方が良いかも。

魔界の仮面弁士 さんのおっしゃる通りですね。無駄なコーディングをしていました。
指摘ありがとうございました。

皆様のお陰で問題を無事解決する事ができました。
どうも有難うございました。
解決済み
引用返信 編集キー/
■54508 / inTopicNo.9)  Re[5]: 構造体の動的配列の初期化
□投稿者/ DD (5回)-(2010/10/22(Fri) 17:16:52)
2010/10/22(Fri) 17:23:27 編集(投稿者)
皆様ご回答ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -