■102671 / 親階層) |
VB6 シリアライズされたオブジェクトを VB.netで復元 |
□投稿者/ こじま まさと (1回)-(2023/12/05(Tue) 09:12:55)
|
分類:[ASP.NET (VB)]
VB6 VB.net(ver4.8)
VB6でType宣言されたオブジェクトをシリアライズしたデータを VB.netでデシリアライズしようとしています。
以下 テストで、
VB6側 Type Layout FileType As String Version As String Orientation As Integer End Type
VB.net側 Structure Layout Dim FileType As String Dim Version As String Dim Orientation As Short End Structure
は、デシリアライズ可能でしたが、
実際のプログラム内は VB6側 Type Layout FileType As String Version As String Orientation As Integer HP(1 To 8) As Single LV(0 To 15) As Integer End Type
と、配列を宣言されていました。
VB.net側で Structure Layout Dim FileType As String Dim Version As String Dim Orientation As Short Dim HP() As Single Dim LV() As Short End Structure Public Sub New ReDim HP(9) ReDim LV(16) End Sub
として、作成しましたが、デシリアライズされませんでした。
調査を行い、 Structure Layout Dim FileType As String Dim Version As String Dim Orientation As Short <VBFixedArray(9)> Dim HP() As Single <VBFixedArray(16)> Dim LV() As Short End Structure
や
Structure Layout Dim FileType As String Dim Version As String Dim Orientation As Short <MarshalAs(UnmanagedType.ByValArray, ArraySubType:=UnmanagedType.Struct, SizeConst:=9)> Dim HP() As Single <MarshalAs(UnmanagedType.ByValArray, ArraySubType:=UnmanagedType.Struct, SizeConst:=16)> Dim LV() As Short End Structure
として、テストしてみましたが、デシリアライズができませんでした。
そもそも、 VB6でType内で配列で定義されている場合、VB.net側でデシリアライズ可能なのでしょうか? 可能であれば、どのようにソースをかけば良いのか、ご指導いただければと存じます。
拙い説明で申し訳ございませんが、お知恵をかりることができればと存じます。
よろしくお願い申し上げます。
|
|