こんにちわ。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 変数名に変数を使用したい。
-
C言語の enum の使い方
-
Excel2010のinputboxで複数デー...
-
定数配列の書き方
-
VBAテキストボックスについて
-
順列をランダムに発生するプロ...
-
コンボボックスのインデックス...
-
配列のペースト出力結果の書式...
-
母親の血液中の胎盤遺伝
-
VBA フォルダ内のファイルを、...
-
VBAの動的配列について
-
構造体配列内の文字列検索のよ...
-
2次元配列の初期値
-
コードの簡略化 VBA
-
テキストボックの文字を一行ず...
-
dimを使わずにredimを使う場合
-
C#でbyte配列から画像を表示さ...
-
VBAにて、配列のデータを一度に...
-
Dir関数で読み取り順を操作でき...
-
Segmentation Fault (メモリ制限?)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
VB6からの移行したいけど、VB.N...
-
大量の変数を定義するにはどう...
-
VB6のメモリ解放に関して
おすすめ情報