Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как узнать длину структуры, неудается узнать длинну структуры 
:(
    Опции темы
NatzZ
Дата 8.10.2007, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



Не получается узнать длинну структуры(имеющей в своем составие вложенные)  чтобы занести ее в файл. 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


PM MAIL   Вверх
mr.DUDA
Дата 8.10.2007, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



System.Runtime.InteropServices.Marshal.SizeOf(тип)


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0591 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.