繁体   English   中英

我如何从文件中读取和写入这个结构数组?

[英]How do I read and write this array of structure to/from a file?

我正在尝试将数组人员写入文件并读取它,但不知道如何 go 了解它。 这是我的代码:

Public Class Form1
Structure Person
    Public name As String
    Public height As Integer
    Public weight As Double
End Structure
Dim persons(49) As Person
Dim arraySize As Integer = 0
Private Sub submitBtn_Click(sender As Object, e As EventArgs) Handles submitBtn.Click
    If arraySize < 50 Then
        Dim Name As String
        Dim Height As Integer
        Dim Weight As Double
        Name = nameTxt.Text
        Height = CInt(heightTxt.Text)
        Weight = CDbl(weightTxt.Text)
        nameTxt.Text = Nothing
        heightTxt.Text = Nothing
        weightTxt.Text = Nothing
        arraySize += 1
        persons(arraySize).name = Name
        persons(arraySize).height = Height
        persons(arraySize).weight = Weight
    Else
        MsgBox("The list of people is full now. You may no longer enter new people.")
    End If


End Sub
Private Sub saveBtn_Click(sender As Object, e As EventArgs) Handles saveBtn.Click
End Sub

Private Sub readBtn_Click(sender As Object, e As EventArgs) Handles readBtn.Click
End Sub

结束 Class

任何有关如何编码的帮助将不胜感激。 谢谢你!

我尝试对其进行编码以将数组 persons(链接到结构 Person)保存到一个文件,但是应用程序冻结了,我不知道如何解决它。

尝试使用列表:

Public Class Form1
<Serializable()> Structure Person
    Public name As String
    Public height As Integer
    Public weight As Double
End Structure

dim persons As List(Of Person)

Private Sub submitBtn_Click(sender As Object, e As EventArgs) Handles submitBtn.Click
    If persons.length < 50 Then
        Dim Name As String
        Dim Height As Integer
        Dim Weight As Double
        Name = nameTxt.Text
        Height = CInt(heightTxt.Text)
        Weight = CDbl(weightTxt.Text)
        nameTxt.Text = Nothing
        heightTxt.Text = Nothing
        weightTxt.Text = Nothing
        
        person.name = Name
        person.height = Height
        person.weight = Weight      
        persons.add(person) 
    Else
        MsgBox("The list of people is full now. You may no longer enter new people.")
    End If


End Sub

Private Sub saveBtn_Click(sender As Object, e As EventArgs) Handles saveBtn.Click
        Using fs As New IO.FileStream("d:\backup\persons.dat", IO.FileMode.Create)
            Dim formatter As New BinaryFormatter
            formatter.Serialize(fs, persons)
        End Using
End Sub

Private Sub readBtn_Click(sender As Object, e As EventArgs) Handles readBtn.Click
         Using fs As New IO.FileStream("d:\backup\persons.dat", IO.FileMode.Open)
            Dim formatter As New BinaryFormatter
            persons = DirectCast(formatter.Deserialize(fs), List(Of person))
        End Using
End Sub

不要忘记在 struc 定义前添加 <Serializable()> 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM