通过文件/函数将结构作为参数传递

时间:2012-06-21 08:25:47

标签: vb.net

我无法通过单个vbnet项目的不同文件中的subs / functions传递结构作为参数,就像我在早期MS基本版本中使用的那样。
以下是情况的简短示例:

的Module1.vb

Imports System.IO

Structure mymultitry
     Dim index As Integer
    <VBFixedString(6)> Dim name As String
    Dim weight As Double
End Structure

Module Module1
Public mysetupfile = "mysetup.dat"

Public Sub rwfile(ByVal rw As Integer, ByVal myrecord As Integer, ByVal mmt As mymultitry)

'EDIT: Thanks to SteveDog - proper line should be:
'Public Sub rwfile(ByVal rw As Integer, ByVal myrecord As Integer, ByRef mmt As mymultitry)

    Dim fnum As Integer
    fnum = FreeFile()
    FileOpen(fnum, mysetupfile, OpenMode.Random, OpenAccess.ReadWrite, OpenShare.Shared, Len(mmt))
    If rw Then
        FilePut(fnum, mmt, myrecord)
    Else
        FileGet(fnum, mmt, myrecord)
    End If
    FileClose(fnum)
End Sub

End Module

Form1.vb的

Public Class Form1
Dim mmt As mymultitry
Dim mmt1 As mymultitry

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    With mmt
        .index = 4
        .name = "Helga"
        .weight = 128.1445
    End With
    rwfile(1, 1, mmt)  'write

    rwfile(0, 1, mmt1) 'read

    'all zero here !?!
    Debug.Print(mmt1.index)
    Debug.Print(mmt1.name)
    Debug.Print(mmt1.weight)

End Sub
End Class

文件“mysetup.dat”可以访问,数据保存正确,我可以看到HxD。 但阅读部分似乎无法按预期工作。

关于可靠的传递结构作为参数的任何帮助,没有基于上层例子的太多公共元素。

1 个答案:

答案 0 :(得分:1)

我强烈建议您重写代码以使用System.IO.File类中的新.NET IO方法,但是,除此之外,我认为您现有代码的问题是您需要更改{{1}从mmtByVal的参数。