アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちわ。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件)

ウインドウズアプリケーションでなく、コンソールアプリケーションで


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にも記事があります
    • good
    • 0

こんばんは。



>VB.netでは構造体の中の配列部分が定義できません。
ん?
>Dim idx() As Integer
これは書けるはずですが・・・?

.NETなら、ArrayList使っては?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!