Форум программистов, компьютерный форум CyberForum.ru

Сохранить данные между вызовами програмы - C++

Восстановить пароль Регистрация
 
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
11.05.2010, 19:14     Сохранить данные между вызовами програмы #1
Такой вопрос - как сохранить в программе данные? Ну например: телефонный справочник - пользователь вводит "Иванов +7-ХХХ-ХХХ-ХХХХ" и закрывает программу. При следующем ее вызове эти данные не пропали, а остались и являются доступны для чтения\редактирования. Просто подскажите в каком направлении думать, а то я , что-то ни чего не могу придумать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MikeSoft
Эксперт C++
 Аватар для MikeSoft
3782 / 1766 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
11.05.2010, 19:25     Сохранить данные между вызовами програмы #2
Kastaneda, при закрытии приложения нужно записать введённые данные либо в файл, либо в реестр.

При загрузке приложения загружать эти данные.
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
11.05.2010, 21:31     Сохранить данные между вызовами програмы #3
В файл лучше записывать в домашний каталог пользователя
В реест - в куст реестра, доступный для юзера
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.05.2010, 21:44     Сохранить данные между вызовами програмы #4
Лучше в файл. Реестр не стоит захломлять. Если хотите, чтобы у каждого пользователя была своя телефонная книга - тогда файл сохраняйте в домашнюю папку пользователя. Если у всех один - достаточно в папку с программой. И, бога ради, не путайте с рабочей директорией - а то у вас потом по всей машине будут валяться файлы данных этой программы, а сами данные будут таинственно исчезать при перезапуске.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
12.05.2010, 10:02  [ТС]     Сохранить данные между вызовами програмы #5
Спасибо, да мне не телефонная книга нужна, это я для примера привел. Просто нужно чтоб данные не проподали между вызовами программы. А каких- нибудь специальных средств нет, кроме как в файл (или реестр) сохранить?
MikeSoft
Эксперт C++
 Аватар для MikeSoft
3782 / 1766 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
12.05.2010, 11:12     Сохранить данные между вызовами програмы #6
Kastaneda, а о каких ещё средствах может идти речь?
Просто так ничего не сохраняется ... либо в файл, либо в реестр.
А как вы себе это представляете?
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
12.05.2010, 11:37     Сохранить данные между вызовами програмы #7
Нет, не бывает. В компьютере есть оперативная память, куда загружаются приложения, где они существуют до завершения, откуда им выделяется виртуальное адресное пространство, в котором они хранят все свои данные. Она энергозависима, поэтому при выключении питания вся информация из неё исчезает. И есть постоянная память - накопители на жёстких и гибких магнитных дисках, flash-память, для особо буйных - ленточные накопители. Есть ещё такое понятие как своппинг, это увеличение размера оперативки посредством накопителей - в Windows это pagefile.sys, в linux - swap-раздел и/или файлы. Реестр, например, святая святых Windows, хранится на разделе, в который она установлена. Все свои сохранялки все игры пишут на накопители. Ну и так далее. Так что руки в ноги, стандартную библиотеку C или C++ в зубы, и вперёд, на мины!
usernet009
 Аватар для usernet009
24 / 24 / 1
Регистрация: 28.12.2009
Сообщений: 85
12.05.2010, 12:47     Сохранить данные между вызовами програмы #8
Нуу.. я думаю ТЕОРЕТИЧЕСКИ можно сохранить данные в оперативке ДО ПЕРЕЗАПУСКА компьютера. Тоесть, мы выделяем всем переменным место в динамической области памяти через оператор new.
Дальше записываем кудато ( например в тот же файл ) все адреса всех переменных и их типы ( чтоб знать количество байт в памяти ). И при выходе из программы НЕ ОЧИЩАЕМ выделенную память. Потом запускам другую программу, она читает из файла все адресса и читает из них значения. Но как это реализовать я не знаю. Надо наверное asm учить
MikeSoft
Эксперт C++
 Аватар для MikeSoft
3782 / 1766 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
12.05.2010, 13:10     Сохранить данные между вызовами програмы #9
usernet009, не надо ASM для этого.
Нужно держать в ОЗУ модуль, который будет хранить данные.
Только теперь давайте вдумаемся в это.

1. Модуль должен висеть постоянно (иначе какой в нём смысл?)
2. Модуль должен держать данные одной программы (а таких программ на самом деле может быть уйма)
3. Модуль должен постоянно находится в режиме ожидания запроса на получения данных.
4. В случае удачного запроса необходимо дополнительное время на передачу и обработку информации. Не скажу, что в Windows этот процесс имеет высокий приоритет, а следовательно выполняется не так быстро, как этого бы хотелось.

Итого мы имеем: невидимое приложение, висящее как лишний процесс или служба, пожирающее ОЗУ и процессорную мощь (пусть даже самую небольшую) и значительно замедляющее запуск хост-приложения.

Вывод: запись в файл или реестр (в реестр - быстрее, но нужен ли мусор в ОС?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2010, 19:09     Сохранить данные между вызовами програмы
Еще ссылки по теме:

C++ Как взять данные из файла и сохранить в файл?
C++ Можно ли сохранить данные класса в файл
C++ Сохранить данные в виде картинки

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
12.05.2010, 19:09  [ТС]     Сохранить данные между вызовами програмы #10
Да это все я знаю, и АСМом более менее владею, а вот С++ только начал учить и подумал, может предусмотренны какие-нибудь специальные средства, поэтому и спросил. В общем все понятно, всем спасибо!

Добавлено через 24 минуты
Цитата Сообщение от Kastaneda Посмотреть сообщение
Да это все я знаю
Ну всмысле почти все

Добавлено через 1 час 56 минут
Кстати, может посоветуете хороший справочник по реестру, а то, те которые я видел содержат информацию типа :"Если вы хотите изменить надпись на часах, поменяйте такой-то ключ", а мне бы хотелось чтоб там было подробно описана структура реестра и что там за что отвечает.
Yandex
Объявления
12.05.2010, 19:09     Сохранить данные между вызовами програмы
Ответ Создать тему
Опции темы

Текущее время: 21:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru