Ошибка чтения MemoryStream

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

justboy
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 13.07.2006 (Чт) 19:05
Откуда: Воронеж

Ошибка чтения MemoryStream

Сообщение justboy » 27.09.2006 (Ср) 12:29

Господа программисты, есть проблемная задача.
Форма содержит UltraWinTree и два DataSeta.
Цель: сохранить содержимое этих объектов - все это в один файл - при закрытии формы и соответственно восстановление данных при загрузке формы.
Решение: (использую MemoryStream)

Код: Выделить всё
Public Sub Save(ByVal FilePatch As String)
        Dim File as IO.File
        Dim Serializer As New Runtime.Serialization.Formatters.Binary.BinaryFormatter

        Dim StorageHashTable As New Hashtable

        Dim TreeMemoStream As New IO.MemoryStream
        Dim VariablesDataSetMemoStream As New IO.MemoryStream
        Dim HashDataSetMemoStream As New IO.MemoryStream


        Me.tree.SaveAsBinary(TreeMemoStream)
        Me.DataSet.WriteXml(VariablesDataSetMemoStream, XmlWriteMode.WriteSchema)
        Me.HashDataSet.WriteXml(HashDataSetMemoStream, XmlWriteMode.WriteSchema)
        StorageHashTable.Add("Tree", TreeMemoStream)
        StorageHashTable.Add("VariablesDataSet", VariablesDataSetMemoStream)
        StorageHashTable.Add("HashDataSet", HashDataSetMemoStream)

        Serializer.Serialize(File.Create(FilePatch), StorageHashTable)
    End Sub


    Public Sub Load(ByVal FilePatch As String)
        Dim file As IO.File
        Dim Serializer As New Runtime.Serialization.Formatters.Binary.BinaryFormatter
        Dim StorageHashTable As New Hashtable


        Dim TreeMemoStream As New IO.MemoryStream
        Dim VariablesDataSetMemoStream As New IO.MemoryStream
        Dim HashDataSetMemoStream As New IO.MemoryStream

        StorageHashTable = Serializer.Deserialize(file.Open(FilePatch), IO.FileMode.Open))

        TreeMemoStream = (StorageHashTable.Item("Tree"))
        VariablesDataSetMemoStream = (StorageHashTable.Item("VariablesDataSet"))
        HashDataSetMemoStream = (StorageHashTable.Item("HashDataSet"))
        Me.tree.LoadFromBinary(TreeMemoStream)
        Me.DataSet.ReadXml(VariablesDataSetMemoStream, XmlReadMode.ReadSchema)
        Me.HashDataSet.ReadXml(HashDataSetMemoStream, XmlReadMode.ReadSchema)

    End Sub


После выполнения процедуры сохранения появляется вполне адекватный по своему содержимому файл.
При исполнении процедуры загрузки данных возникает исключение: "ApplicationExeption was Unhandled" в строке
Код: Выделить всё
Me.tree.LoadFromBinary(TreeMemoStream)


То же происходит на стадии:

Код: Выделить всё
Me.DataSet.ReadXml(VariablesDataSetMemoStream, XmlReadMode.ReadSchema)
        Me.HashDataSet.ReadXml(HashDataSetMemoStream, XmlReadMode.ReadSchema)


Не могу понять чем не приглянулся UltraTree и DataSet-ам этот поток???
Если транслятор не нашел ошибок в программе - обратитесь к системному программисту - он исправит ошибки в трансляторе.

Подпись в стадии отладки...
Please wait...

justboy
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 13.07.2006 (Чт) 19:05
Откуда: Воронеж

Сообщение justboy » 30.09.2006 (Сб) 16:45

а кстати, дело было пустяковое. Просто после его прочтения не позиционировал указатель на начало потока.(мож кому пригодится ответ) Хе хе, дуралей. :lol:

Прикольно самому с собой на форуме тусить... :D
Если транслятор не нашел ошибок в программе - обратитесь к системному программисту - он исправит ошибки в трансляторе.

Подпись в стадии отладки...
Please wait...


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

    TopList