Не получается узнать длинну структуры(имеющей в своем составие вложенные) чтобы занести ее в файл. Len дает длинну тока начальной структуры (не учитывает вложения) Способ с узнаваением длинны каждой структуры и их сложение&умножение доет какойто Непонятный результат(приодится прибавлять 729 + 6 * MaxNPVDatRecs .
Или скажите откуда берется число 729 + 6 * MaxNPVDatRecs (без которого FilePut пишет что непомещается запись не помещается в файл)
ЗЫ Просто данные нужно заносить строго пошаблону структуры и непонятно получаемый файл соотвестует ему или нет
| Код |
Imports System.Data.SqlClient
Public Class write_dat Public MaxNPVDatRecs As Integer =15 '
Structure TDataRec Dim id As Short Dim value As Single End Structure
Structure TDataRecs Dim byDay As Byte Dim byMonth As Byte Dim Values() As TDataRec Public Sub Initialize(ByVal MaxDatRecs) ReDim Values(MaxDatRecs - 1) End Sub End Structure
Structure TFile Dim wParamCount As Integer <VBFixedArray(719)> Dim TwoMinValues() As TDataRecs Public Sub Initialize() ReDim TwoMinValues(719) End Sub
End Structure
Sub write_data(ByVal path As String) Dim Struct As TFile Struct = New TFile
Struct.Initialize() Dim i%, j% For i = 0 To 719 Struct.TwoMinValues(i).Initialize(MaxNPVDatRecs) Next
Struct.wParamCount = MaxNPVDatRecs 'количество датчиков
path = path strFile = path & "npv" & CStr(date_Day) & ".dat"
Dim TDataRecLigt As Int32 = Len(Struct.TwoMinValues(0).Values(0)) Dim TDataRecsLigt As Int32 = Len(Struct.TwoMinValues(0)) Dim StructLigt As Int32 = Len(Struct.TwoMinValues(0))
'получение длинны Dim ligt_ As Int32 = ((TDataRecLigt * MaxNPVDatRecs - 1) + TDataRecsLigt) * 719 + StructLigt Dim ligt As Int32 = ligt_ + 729 + 6 * MaxNPVDatRecs ' почему то приходится прибавлять 729 + 6 * MaxNPVDatRecs
hFile = FreeFile()
FileOpen(hFile, strFile, OpenMode.Random, OpenAccess.ReadWrite, , ligt)
FilePut(hFile, Struct) FileClose(hFile)
End Sub End Class
|
|