こんにちわ。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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
- Visual Basic(VBA) For~Nextステートメントの終了条件について 1 2023/01/08 18:36
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:13
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
VB.NETの配列にExcelから読み込...
-
エクセルでXY座標に並べられた...
-
Excel2010のinputboxで複数デー...
-
Dir関数で読み取り順を操作でき...
-
free()関数の多用 と Segment...
-
Redim とEraseの違いは?
-
2次元配列のソート
-
excel vbaの配列なんですが・・・
-
配列入れ替えの効率的方法は
-
ポーカーを作りたいのですが・・・
-
エクセル(VBA)の空白配列の削除...
-
C#,繰り返し処理での最大値の取...
-
VBAでMODE関数をつくる
-
VB6からの移行したいけど、VB.N...
-
VBAで配列引数を値渡しできない...
-
MATLABを使ったSTLデータのボク...
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
2次元配列でウォッチが出来ない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
VB6からの移行したいけど、VB.N...
-
VB6のメモリ解放に関して
おすすめ情報