

こんにちわ。VB.NET初心者です。伝授お願いします。
VB6では
Type Tpn_Index
IdxSu As Integer
idx(MAXTPN-1) As Integer
End Type
と定義できますが、VB.netでは構造体の中の配列部分が定義できません。
どのように書けばよろしいでしょうか?
Public Structure Tpn_Index
Dim IdxSu As Integer
Dim idx() As Integer
End Structure
上記の Dim idx() As Integer の部分です
宜しくお願いします
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ウインドウズアプリケーションでなく、コンソールアプリケーションで
mports System
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.Security.Permissions
Module Module1
Private Structure MyType
Dim MyArray() As Short 'Dim MyArray(2) As Shortはエラー
Dim MyString As String
End Structure
Sub Main()
Dim r(10) As MyType
ReDim r(1).MyArray(5)
ReDim r(2).MyArray(5)
r(1).MyString = "山田"
r(1).MyArray(1) = 123
r(1).MyArray(2) = 999
r(2).MyString = "木村"
r(2).MyArray(1) = 1112
r(2).MyArray(2) = 9999
Microsoft.VisualBasic.MsgBox(r(1).MyString)
Microsoft.VisualBasic.MsgBox(r(1).MyArray(1))
Microsoft.VisualBasic.MsgBox(r(1).MyArray(2))
Microsoft.VisualBasic.MsgBox(r(2).MyString)
Microsoft.VisualBasic.MsgBox(r(2).MyArray(1))
Microsoft.VisualBasic.MsgBox(r(2).MyArray(2))
End Sub
End Module
はどうでしょうか。
Microsoft.VisualBasic.MsgBox(r(1).MyString)
以下は確認用です。
---
「vb.net 構造体の中の配列」でGogle照会すると
http://msdn.microsoft.com/ja-jp/library/dd297715 …
などが出てきて
>ユーザー定義型は、Visual Basic .NET では構造体 (Structure) といいます。この構造体の宣言時に、配列の要素数の指定や、固定長文字列を使うことはできなくなりました。
となっており、そこのMarshalの例をやってみたがうまく行かない(コードのエラーが出る。スペースなどが不適当のようです)。
ーー
下記で動くようです
Imports System
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.Security.Permissions
Module Module1
Private Structure MyType
Dim MyArray() As Short
<VBFixedString(100), System.Runtime.InteropServices.MarshalAs _
(UnmanagedType.ByValTStr, SizeConst:=100)> _
Dim MyString As String
Public Sub Initialize()
ReDim MyArray(5)
End Sub
End Structure
Sub Main()
Dim r As MyType
ReDim r.MyArray(5)
r.MyArray(1) = 222
r.MyArray(2) = 554
Microsoft.VisualBasic.MsgBox(r.MyArray(1))
Microsoft.VisualBasic.MsgBox(r.MyArray(2))
End Sub
End Module
ーー
http://dobon.net/vb/bbs/log3-19/11699.htmlにも記事があります
No.1
- 回答日時:
こんばんは。
>VB.netでは構造体の中の配列部分が定義できません。
ん?
>Dim idx() As Integer
これは書けるはずですが・・・?
.NETなら、ArrayList使っては?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
Redim とEraseの違いは?
-
COBOLの基本的な事なので...
-
ジャグ配列生成時の1オリジン
-
C#,繰り返し処理での最大値の取...
-
構造体配列内の文字列検索のよ...
-
VB.NETの配列にExcelから読み込...
-
大量の変数を定義するにはどう...
-
ポーカーを作りたいのですが・・・
-
(VBA) 配列の文字列を昇順で並...
-
レコードセットの中身を配列に...
-
スロットマシンの判定方法(VB...
-
VBAで配列引数を値渡しできない...
-
VBからID3タグをいじる方法
-
クリスタルレポート(8.5)の書式...
-
DataGridViewに複数テーブルの...
-
ACCESSのレコード転送について
-
『列名 '担当者CD' があいま...
-
SQLを発行とは?クエリの作成と...
-
【ExcelVBA】値を変更しながら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
vba フィルター 複数条件 3つ以...
-
配列のペースト出力結果の書式...
-
OutOfMemoryExceptionの回避策...
-
配列の中の最大値とそのインデ...
-
複数のtextboxの処理を一括で行...
-
Dir関数で読み取り順を操作でき...
-
VB6からの移行したいけど、VB.N...
-
COBOLの基本的な事なので...
-
構造体配列の特定のメンバーをF...
-
大量の変数を定義するにはどう...
-
EXCEL VBAの課題です
-
Redim とEraseの違いは?
-
VB.NETの配列にExcelから読み込...
-
VBAでMODE関数をつくる
-
VB.NETにて、構造体へデータを...
-
1ビットごとの配列を作りたい
-
VBAで配列引数を値渡しできない...
おすすめ情報