○VB.netにて固定長ファイルを読み書き
Dim sjis As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift-JIS")
'固定長の構造体を宣言します。
Structure DataCell
<VBFixedArray(50 - 1)> Public a() As Byte
<VBFixedArray(11 - 1)> Public b() As Byte
<VBFixedArray(11 - 1)> Public c() As Byte
<VBFixedArray(50 - 1)> Public d() As Byte
<VBFixedArray(11 - 1)> Public e() As Byte
<VBFixedArray(2 - 1)> Public crlf() As Byte
End Structure
'レコードの読み込み
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim FileNum As Integer = FileSystem.FreeFile
FileSystem.FileOpen(FileNum, "c:\test.txt", OpenMode.Random, , , Len(New DataCell()))
Dim pos As DataCell
'’レコード読み込み 先頭は1です。
FileSystem.FileGet(FileNum, pos, 4)
''レコードを書き込み 先頭は1です。
'FileSystem.FilePut(FileNum, pos, 3)
FileSystem.FileClose(FileNum) 'ファイルを閉じる
Debug.WriteLine(sjis.GetString(pos.a))
Debug.WriteLine(sjis.GetString(pos.b))
Debug.WriteLine(sjis.GetString(pos.c))
Debug.WriteLine(sjis.GetString(pos.d))
Debug.WriteLine(sjis.GetString(pos.e))
End Sub
'レコードの書き込み
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim FileNum As Integer = FileSystem.FreeFile
FileSystem.FileOpen(FileNum, "c:\test.txt", OpenMode.Random, , , Len(New DataCell()))
Dim pos As DataCell
pos.a = sjis.GetBytes("今日は")
pos.b = sjis.GetBytes("100")
pos.c = sjis.GetBytes("200")
pos.d = sjis.GetBytes("晴天なり")
pos.e = sjis.GetBytes("300")
pos.crlf = sjis.GetBytes(vbCrLf)
'’レコード読み込み 先頭は1です。
'FileSystem.FileGet(FileNum, pos, 4)
''レコードを書き込み 先頭は1です。
FileSystem.FilePut(FileNum, pos, 5)
FileSystem.FileClose(FileNum) 'ファイルを閉じる
End Sub
'レコードの総数を取得
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim count As Integer = FileLen("c:\test.txt") / Len(New DataCell())
Debug.WriteLine(count.ToString)
End Sub