- 題名: 構造体のファイル書き込み
- 日時: 2005/09/05 18:23:40
- ID: 12636
- この記事の返信元:
- (なし)
- この記事への返信:
- [12640] Re[1]: 構造体のファイル書き込み2005/09/07 10:11:04
- ツリーを表示
Pointは使えないみたいだったので以下の様に してみたんですがどうでしょう? '宣言 Private Structure PointDataOrg <VBFixedArray(4)> Dim X As Integer <VBFixedArray(4)> Dim y As Integer End Structure Private Structure GroupDataOrg 'グループ情報 <VBFixedStringAttribute(32)> Dim name As String <VBFixedArray(8)> Dim GroupData2() As PointDataOrg End Structure Dim GroupData(1) As GroupDataOrg Private Sub StartProgram() ReDim GroupData(0).GroupData2(8) ReDim GroupData(1).GroupData2(8) Dim i As Integer Dim tmp As ValueType GroupData(0).name = "aaaaa" GroupData(0).GroupData2(0).X = 100 GroupData(0).GroupData2(0).y = 800 FileOpen(1, "test.dat", OpenMode.Random) For i = 0 To GroupData.Length - 1 FilePut(1, GroupData(i), i + 1) Next FileClose(1) Console.WriteLine(GroupData(0).GroupData2(0).X.ToString) 'この時点の値は100 If Not Dir("test.dat") = "" Then i = 0 FileOpen(1, "test.dat", OpenMode.Random) Do While (Not EOF(1)) tmp = GroupData(i) FileGet(1, tmp) GroupData(i) = CType(tmp, GroupDataOrg) i += 1 Loop FileClose(1) End If Console.WriteLine(GroupData(0).GroupData2(0).X.ToString) 'この時点でも値は100 End Sub
分類:[.NET]
構造体のデータをファイルに書き込んでいます。
構造体のメンバのタイプにpointを使用しているのですが
ファイルに書き込むと値が0になっています。
(バイナリエディタで確認しました)
何がいけないのでしょうか?
ご存知の方よろしくお願い致します。
'宣言
Private Structure GroupDataOrg 'グループ情報
<VBFixedStringAttribute(32)> Dim name As String
<VBFixedArray(8)> Dim XY() As Point
End Structure
Dim GroupData(1) As GroupDataOrg
Private Sub StartProgram()
ReDim GroupData(0).XY(8)
ReDim GroupData(1).XY(8)
GroupData(0).XY(0).X = 100
GroupData(0).XY(0).Y = 800
Dim i As Short
FileOpen(1, "test.dat", OpenMode.Random, , , Len(GroupData(0)))
For i = 0 To GroupData.Length - 1
FilePut(1, GroupData(i), i + 1)
Next
FileClose(1)
Console.WriteLine(GroupData(0).XY(0).X.ToString)
'この時点の値は100
If Dir("test.dat") <> "" Then
i = 0
FileOpen(1, "test.dat", OpenMode.Random, , , Len(GroupData(0)))
Do While (Not EOF(1))
FileGet(1, GroupData(i), i + 1)
i += 1
Loop
FileClose(1)
End If
Console.WriteLine(GroupData(0).XY(0).X.ToString)
'この時点の値は0になっている
End Sub