C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■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側でデシリアライズ可能なのでしょうか?
可能であれば、どのようにソースをかけば良いのか、ご指導いただければと存じます。

拙い説明で申し訳ございませんが、お知恵をかりることができればと存じます。

よろしくお願い申し上げます。


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: VB6 シリアライズされたオブジェクトを VB.netで復元 /魔界の仮面弁士
 
上記関連ツリー

VB6 シリアライズされたオブジェクトを VB.netで復元 / こじま まさと (23/12/05(Tue) 09:12) #102671 ←Now
Re[1]: VB6 シリアライズされたオブジェクトを VB.netで復元 / 魔界の仮面弁士 (23/12/05(Tue) 10:24) #102672
  └ Re[2]: VB6 シリアライズされたオブジェクトを VB.netで復元 / こじま まさと (23/12/05(Tue) 12:04) #102673 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信