Sameer Azzam Ответов: 1

Как создать файловую структуру внутри структуры?


Я хотел бы знать, что не так с этим кодом, потому что каждый раз, когда я пытаюсь запустить этот код, он дает мне Error: Bad record length.
Public Structure WorkersSource
        <vbfixedstring(20)> Public Code As String
        <vbfixedstring(20)> Public FirstName As String
        <vbfixedstring(20)> Public LastName As String
        <vbfixedstring(20)> Public PhoneNumber As String
        <vbfixedstring(20)> Public Job As String
        Public Salary As Double
        Public Position As Integer
        <vbfixedstring(20)> Public UserName As String
        <vbfixedstring(20)> Public Password As String
        <vbfixedarray(6)> Public PayingDaliy() As WorkersPD
    End Structure

    Public Structure WorkersPD
        <vbfixedstring(20)> Public Day As String
        Public DateOfWeek As Date
        Public PayingOfDay As Double
        Public Present As Boolean
        Public Debts As Double
        Public Purchases As Double
        Public PayingNet As Double
    End Structure

    Public Sub AddWRecord(ByVal TmpRecordWorkerType As WorkersSource)
        Dim DataRecord As New WorkersSource
        Dim FileNum As Integer = FreeFile()

        FileOpen(FileNum, TmpFileName, OpenMode.Random, , , Len(DataRecord))

        With DataRecord
            .Code = TmpRecordWorkerType.Code
            .FirstName = TmpRecordWorkerType.FirstName
            .LastName = TmpRecordWorkerType.LastName
            .PhoneNumber = TmpRecordWorkerType.PhoneNumber
            .Job = TmpRecordWorkerType.Job
            .Salary = TmpRecordWorkerType.Salary
            .Position = TmpRecordWorkerType.Position
            .UserName = TmpRecordWorkerType.UserName
            .Password = TmpRecordWorkerType.Password

            For I = 0 To 6
                 .PayingDaliy(I).Day = TmpMonday.AddDays(I).ToString("dddd")
                 .PayingDaliy(I).DateOfWeek = TmpMonday.AddDays(I)
                 .PayingDaliy(I).PayingOfDay = 0.00
                 .PayingDaliy(I).Present = False
                 .PayingDaliy(I).Debts = 0.00
                 .PayingDaliy(I).Purchases = 0.00
                 .PayingDaliy(I).PayingNet = 0.00
            Next

        End With

            FilePut(FileNum, DataRecord, TotalWorkers.Count)

            FileClose(FileNum)

    End Function

Этот код должен сохранять массив информации о работнике и внутри этого массива есть еще один массив финансового положения работника за неделю и вся информация должна быть сохранена в файл который будет содержать остальных работников вот почему там есть еще один массив информации о финансовом положении работника за неделю "TotalWorkers.Count"

Есть ли какое-то решение?

Спасибо

Что я уже пробовал:

Я пытался переделать платежную систему, прежде чем дать ей значения, но это не сработало.

1 Ответов

Рейтинг:
2

Gerry Schmitz

Вы прикрепляете атрибут "фиксированный массив", но нигде не "выделяете" массив.

Атрибут Vbfixedarrayattribute Класс (Майкрософт.На Языке VisualBasic) | Майкрософт Документы[^]