tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルStructureを可変な配列で使用したいです。
記事No5622
投稿日: 2007/06/09(Sat) 15:23
投稿者もねを
こんにちは。Structureを可変の配列のように使用したいと考えています。

今、このようなコードを書いています。

  'モジュールに記述しています。
  '見積登録内の明細部分の構造体
  Public Structure strMeisai
    Public Naiyo As String
    Public Syohin As String
    Public Suryo As String
    Public TaniName As String
    Public TaniCode As String
    Public Tanka As String
    Public Kingaku As String
    Public Tax As String
    Public Biko As String
  End Structure

 'ここから先はForm側に書いています。
  Private TIndex As Integer = 20 '←固定で20を書いてみた
  Private Meisai(0 To TIndex) As strMeisai

  Private Sub clearAll()
    '構造体を初期化する
    For i = 0 To TIndex
      Meisai(i).Naiyo = ""
      Meisai(i).Syohin = ""
      Meisai(i).Suryo = ""
      Meisai(i).TaniName = ""
      Meisai(i).TaniCode = ""
      Meisai(i).Tanka = ""
      Meisai(i).Kingaku = ""
      Meisai(i).Tax = ""
      Meisai(i).Biko = ""
    Next
  End Sub

この場合はOKです。配列も20個作られます。

しかし、
  Private TIndex As Integer = 20
  Private Meisai(0 To TIndex) As strMeisai
ここで記述した20は、可変となるため変わってきます。
そのため、以下のように変更しました。

  Private TIndex As Integer = int見積行数 '←ここを変更
  Private Meisai(0 To TIndex) As strMeisai

  Private Sub clearAll()

'〜マスタからデータを取得する〜 中略

   int見積行数 = SQLReader("見積行数")

  '〜中略

    '構造体を初期化する
    For i = 0 To TIndex
      Meisai(i).Naiyo = ""
      Meisai(i).Syohin = ""
      Meisai(i).Suryo = ""
      Meisai(i).TaniName = ""
      Meisai(i).TaniCode = ""
      Meisai(i).Tanka = ""
      Meisai(i).Kingaku = ""
      Meisai(i).Tax = ""
      Meisai(i).Biko = ""
    Next
  End Sub

これで実行するとIndexのエラーが出ます。

エラー番号:9
インデックス範囲の境界外です。

このように可変で行いたいのですが可能でしょうか?
よきアドバイスお願いいたします。

[ツリー表示へ]
タイトルRe: Structureを可変な配列で使用したいです。
記事No5627
投稿日: 2007/06/09(Sat) 19:10
投稿者魔界の仮面弁士
> こんにちは。Structureを可変の配列のように使用したいと考えています。
配列は、常に可変サイズですよ。
C# 2.0 の unsafe コードのように、fixed キーワードがあるわけでもありませんし。

> このように可変で行いたいのですが可能でしょうか?
ReDim ステートメントで、配列サイズを変更できます。

ただし配列よりは、List(Of T) や ArrayList などを使った方が便利かもしれません。

[ツリー表示へ]
タイトルRe^2: Structureを可変な配列で使用したいです。
記事No5628
投稿日: 2007/06/10(Sun) 15:01
投稿者もねを
魔界の仮面弁士さん いつもありがとうございます。
配列は可能をヒントにして以下のようにして出来ました。
ありがとうございます。

  Public Structure strMeisai
    Public Naiyo As String
    Public Syohin As String
    Public Suryo As String
    Public TaniName As String
    Public TaniCode As String
    Public Tanka As String
    Public Kingaku As String
    Public Tax As String
    Public Biko As String
  End Structure


  Private TIndex As Integer
  Private Meisai() As strMeisai


 TIndex = int明細行数 ← DBから取得した内容
 dim Meisai(TIndex )

    For i = 0 To TIndex
      Meisai(i).Naiyo = ""
      Meisai(i).Syohin = ""
      Meisai(i).Suryo = ""
      Meisai(i).TaniName = ""
      Meisai(i).TaniCode = ""
      Meisai(i).Tanka = ""
      Meisai(i).Kingaku = ""
      Meisai(i).Tax = ""
      Meisai(i).Biko = ""
    Next

[ツリー表示へ]