Разработка собственного формата файла - почитать бы

Все вопросы «а не подскажете, где мне найти...» обсуждаются только здесь.
yaama
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 07.03.2007 (Ср) 21:59

Разработка собственного формата файла - почитать бы

Сообщение yaama » 07.06.2007 (Чт) 12:22

Суть вопроса такая: есть у меня несколько простых программ в один экзешник. Они довольно однообразны по своей структуре: есть около сотни переменных (as integer и as double) , пользователь вводит необходимые значения в текстбоксы, ставит галочки и т.д., производится расчет, формируется переменная Report As String.
Сохранение данных изначально предусмотрено не было.
Естественно, первое что приходит в голову - предусмотреть сохранение переменных в текстовом файле. Пользователь открывает файл, все галочки сами расставляются куда нужно, значения считываются и вводятся в свои текстбоксы, остается по надобности изменить что то и получить новый отчет. Технически все однообразно, но трудоемко. И разбираться в старых кодах, пусть даже своих очень не хочется.
Мне пришла в голову мысль, что, возможно, есть какие то готовые решения, позволяющие автоматом запоминать и сохранять (для последующего восстановления) мгновенное состояние конструкии, именуемой "программа".
Я любитель и системные знания в программировании у меня на начальной стадии становления. Очень хотел бы почитать какую то общую статью по грамотному проектированию программ имеющих возможность сохранения данных в собственных форматах файлов.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 07.06.2007 (Чт) 12:37

PropertyBag, XML... Но придётся таки писать код загрузки и выгрузки. О сериализации данных следовало заботиться несколько раньше.
Изображение

yaama
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 07.03.2007 (Ср) 21:59

Сообщение yaama » 07.06.2007 (Чт) 13:43

keks-n писал(а):PropertyBag, XML... Но придётся таки писать код загрузки и выгрузки. О сериализации данных следовало заботиться несколько раньше.


Спасибо. А не можете подсказать ссылку на кирпич или готовую несложную программу ( .NET или vb5cce), имеющую механизм сохранения данных и работающую по описанному мной выше принципу, только методологически верно.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 07.06.2007 (Чт) 22:23

Мне кажется, что нужно читать по теме чтение/сохранение в INI файл... Где найти конкретно не скажу, но по гуглу хватает ссылок

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.06.2007 (Чт) 23:59

А почему бы не подумать самому?
Например на основе этого кода (рекордсет в нем только для примера, можно использовать любой другой способ):
Код: Выделить всё
Private Sub DataSave(Recordset As Object)
Set Recordset = CreateObject("ADODB.Recordset")
Recordset.CursorLocation = 3
Recordset.CursorType = 1
Recordset.LockType = 3
Recordset.Fields.Append "name", 202, 160
Recordset.Fields.Append "type", 202, 160
Recordset.Fields.Append "value_string", 202, 200, 32
Recordset.Fields.Append "value_integer", 3, , 32
Recordset.Fields.Append "value_boolean", 11, , 32
Recordset.Open
Recordset.Fields("name").Properties("Optimize") = True
Recordset.AddNew _
  Array("name", "type", "value_string", "value_integer", "value_boolean"), _
  Array("var1", "string", "sample1", Null, Null)
Recordset.AddNew _
  Array("name", "type", "value_string", "value_integer", "value_boolean"), _
  Array("var2", "string", "sample2", Null, Null)
Recordset.AddNew _
  Array("name", "type", "value_string", "value_integer", "value_boolean"), _
  Array("var3", "bool", Null, Null, True)
Recordset.AddNew _
  Array("name", "type", "value_string", "value_integer", "value_boolean"), _
  Array("var4", "int", Null, 123, Null)
Recordset.Save "C:\temp.xml", 1
End Sub

Private Sub DataLoad(Recordset As Object)
Set Recordset = CreateObject("ADODB.Recordset")
Recordset.Open "C:\temp.xml"
Recordset.Fields("name").Properties("Optimize") = True
Debug.Print Recordset.RecordCount
Do Until Recordset.EOF
  Debug.Print "  - " & Recordset!Name & " (" & Recordset!Type & ") = " & Recordset!value_string & Recordset!value_integer & Recordset!value_boolean
  Recordset.MoveNext
Loop
End Sub
Lasciate ogni speranza, voi ch'entrate.

yaama
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 07.03.2007 (Ср) 21:59

Сообщение yaama » 08.06.2007 (Пт) 5:59

Спасибо! Вопрос исчерпан, направление для поиска выбрано, код в стадии разбора!


Вернуться в Народный поиск

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

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

    TopList