Страница: 1 |
Вопрос: Сохранение данных | Добавлено: 10.09.03 16:47 |
Автор вопроса: ![]() |
Нужно сохранять большое количество разных данных, переменных итд в файл и соответственно читать их из него (что то типа "save" в играх). Подскажите, плз, как такое лучше реализовать. Может, есть простой пример подобной реализации? Всем спасибо. |
Ответы | Всего ответов: 7 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ICQ: 280044491 Вопросов: 43 Ответов: 227 |
Профиль | Цитата | #1 | Добавлено: 10.09.03 17:28 |
создаешь какунить структуру (класс, что хочешь), запи[sensored]шь туда все данные, а потом можешь сделать следующее: Dim stream As System.IO.Stream = System.IO.File.Open("save.dat", System.IO.FileMode.Create) Dim formatter As System.Runtime.Serialization.Formatters.Binary.BinaryFormatter = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter() formatter.Serialize(stream, MyData) 'MyData - твоя перемення (ссылка на класс, структуру ...)
а вот так можна считать данные
Dim b = formatter.Deserialize(stream) 'stream - естественно нужно ешо открыть stream.Close() b - будет переменной MyData
----------------- если не подходит такой способ
|
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ICQ: 280044491 Вопросов: 43 Ответов: 227 |
Профиль | Цитата | #2 | Добавлено: 10.09.03 17:31 |
а что это за запи[sensored]шь ? я ничего плохого не хотел сказать! что плохого в слове запи_х_у_е_ш? |
Номер ответа: 3 Автор ответа: ![]() ![]() Вопросов: 15 Ответов: 115 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 10.09.03 17:39 |
function LoadFile($fname) { $f=@fopen(GBook, "rb"); if(!$f) return array(); $Book=Unserialize(fread($f, 100000)); fclose($f); return $Book; } function SaveBook ($fname, $Book) { $f=fopen(GBook, "wb"); fwrite($f, Serialize($Book)); fclose($f); Это на PHP - куда удобней! Скомпилируй похожие функции на С++ в библиотеку, и вызывай оттуда. |
Номер ответа: 4 Автор ответа: ![]() ![]() ICQ: 8440085 Вопросов: 15 Ответов: 117 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 11.09.03 07:13 |
Я бы использовал запись в ини-файл. Получится достаточно читабельно, как в самом файле, так и в коде программы. Можно считывать не все данные сразу и потом их в коде разгр[sensored]ь, а выборочно, по мере надобности. В инете масса приблуд для работы с ини. Я использую модуль с АПИ. А если ты хочешь скрыть какие-либо параметры, можно либо их зашифровать, либо в реестр. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #5 | Добавлено: 11.09.03 10:17 |
На .NET это, конечно, удобно, на на VB6 не катит. Можно конечно в ини файл сохранять, но я обычно делал дубово - просто запихивал все переменные в массив, затем скидывал этот массив через Put. Чтение, соответственно, через Get. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 326066673 Вопросов: 368 Ответов: 5968 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 11.09.03 12:00 |
Я бы предложил соорудить структуру со всеми нужными полями, а потом читать/писать в режиме Binary сразу структуры. В .NET очень удобно юзать сериализацию. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 326066673 Вопросов: 368 Ответов: 5968 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 11.09.03 13:20 |
To Артём: да вроде сказали, что надо не в .NET ![]() - мощная вещь! Особнно при небольших объёмах данных (если не приходится слишком забивать ОЗУ). |
Страница: 1 |
|