![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Igoreck |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 28.9.2007 Репутация: нет Всего: нет |
Как записать структуру в файл не используя сериализацию. Проблема в том , что при сериализации записывается много служебной информации, а у меня должна производиться запись через несколько секунд в течении долгого времени и тут размер каждой записи становится критичным.
Пусть у нас есть упрощенная структура с одной переменной:
Я решил попробывать записать через байтовый массив. Пришлось создать функию с использованием "небезопасного" (unsafe) кода - иначе не работала функция определения размера структуры :
можно ли преобразовать структуру в массив переменных типа byte? Если можно - то как. Или есть какое-нибудь более красивое решение моего вопроса |
||||
|
|||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
Igoreck, а вы какую сериализацию использовали?
BinaryFormatter ом не пробовали? -------------------- СУВ, Partizan. |
|||
|
||||
| Igoreck |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 28.9.2007 Репутация: нет Всего: нет |
to Partizan "BinaryFormatter ом не пробовали?" - вот им как раз и пробывал)) - все записалось- только к 50 байтам полезной информации добавилось почти целый Кб служебной ((
|
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
ну вообще тут могут пригодиться функции Marshal.StructureToPtr и Marshal.PtrToStruct
-------------------- СУВ, Partizan. |
|||
|
||||
| Igoreck |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 28.9.2007 Репутация: нет Всего: нет |
to Partizan - большое спасибо за совет - эт то что надо)))) - вроде все получилось :
функция преобразования из файла в структуру:
и наоборот - из структуры в байтовый массив и записи в файл :
и что особо радует - удалось избежать использования unsafe кода )) Это сообщение отредактировал(а) Igoreck - 30.7.2008, 21:47 |
||||
|
|||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
Igoreck, может лучше в сторону баз данных посмотри? Код будет даже меньше, чем для записи в файл. И не придется изобретать велосипед.
|
|||
|
||||
| Igoreck |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 28.9.2007 Репутация: нет Всего: нет |
to PashaPash - с базами данных я работал только на фоксе - давно и мало - а с файлами - много и на С++ . На шарпе правда еще ни с тем ни другим не работал - но решил, что с файлами мне будет проще разобраться - хотя может я еще и поменяю точку зрения в процессе работы))
|
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
а какой смысл в базе данных, если всего-то и надо что сериализовать парочку объектов?
-------------------- СУВ, Partizan. |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
вообще-то задача, насколько я понял - запись показаний датчика температуры. куча одинаковых записей, по записи в пару секунд, в течении долгого времени - это совсем не "парочка объектов". Это пару десятков тысяч записей в сутки. Очень интересно будет посмотреть как по этой "парочке сериализованных объектов" будут строить статистику за месяц. Igoreck, все зависит от объема данных и от того, как их потом собираешься использовать. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |