

こんにちわ。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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
RPG 配列宣言について
-
VBScriptでCSVファイルを読み出...
-
順列をランダムに発生するプロ...
-
配列のペースト出力結果の書式...
-
構造体配列内の文字列検索のよ...
-
VCのDLL内でmallocした構造体を...
-
定数配列の書き方
-
VB6からの移行したいけど、VB.N...
-
大量の変数を定義するにはどう...
-
CheckBoxの配列化
-
Dir関数で読み取り順を操作でき...
-
VBAでMODE関数をつくる
-
配列の中の最大値とそのインデ...
-
構造体配列の特定のメンバーをF...
-
DBから取得した値を配列へ代入する
-
配列の中から最大値だけ取り出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
Dir関数で読み取り順を操作でき...
-
vba フィルター 複数条件 3つ以...
-
配列のペースト出力結果の書式...
-
複数のtextboxの処理を一括で行...
-
Excelのメモリ(配列)の上限は2G...
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
Excel2010のinputboxで複数デー...
-
COBOLの基本的な事なので...
-
構造体配列内の文字列検索のよ...
-
VBAでMODE関数をつくる
-
Redim とEraseの違いは?
-
VBScriptでCSVファイルを読み出...
-
VB6のメモリ解放に関して
-
VB.NETの配列にExcelから読み込...
-
Segmentation Fault (メモリ制限?)
-
ActiveReports(アクティブレポ...
おすすめ情報