Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30

Сохранение настроек

19.08.2011, 05:03. Показов 4036. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть программа которая сохраняет свои настройки ну например в ini или txt файл при ее закрытии пользователем.
Вопрос в том как сделать что бы сохранялись настройки при выключении компа пользователем?
Т.е в момент когда программа запущена а пользователь пытается выключить комп.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.08.2011, 05:03
Ответы с готовыми решениями:

Сохранение настроек.
Есть много чекбоксов. Как можно сохранить у файл или инифайл то, отмечен ли каждый чекбокс??? Писать кучу "ифов" не хочется.

Сохранение настроек
Доброго времени суток. Как можно сохранять настройки порограмы.Зарание спасибо.

Сохранение настроек в .txt
Всем доброго времени суток. У меня возник вопрос, как можно сохранить настройки (цвет окна, шрифта, значение некоторых переменных) в .txt...

16
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
19.08.2011, 05:44
я так понимаю, при аварийном завершении программы возникает исключение EAbort , вот его и надо перехватывать
2
6 / 6 / 0
Регистрация: 11.04.2011
Сообщений: 130
19.08.2011, 23:46
тут всё просто
включаешь библиотеку
Code
1
#include "IniFiles.hpp"
создаёшь класс ini
Code
1
TIniFile *ini = new TIniFile("config.ini");
на форме 2 кнопки, Edit и RadioGroup
Code
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::ButtonWriteClick(TObject *Sender)
{
        ini->WriteString("Edit1","Edit",Edit1->Text);
        ini->WriteInteger("Radio1","RadioGroup1",RadioGroup1->ItemIndex);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonReadClick(TObject *Sender)
{
        Edit1->Text = ini->ReadString("Edit1","Edit",Edit1->Text);
        RadioGroup1->ItemIndex = ini->ReadInteger("Radio1","RadioGroup1",RadioGroup1->ItemIndex);
}
ну это пример с кнопками, а ты сделай при событии onActivate - считывает с файла а при onDestroy всё сохраняет
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
19.08.2011, 23:58
Это может не сработать при аварийной остановки приложения процессор может быть перегружен что вызовет небольшое зависание, вследствии чего он просто не успеет записать настройки в ини.
Выход давольно таки прост, сохраняй настройки сразу после изменения, у меня например так сохраняется положение CheckBox Checked:

Ставиш галочку в CheckBox1 и в событии CheckBox1/Onclick пишеш:
C++
1
ini->WriteBool("CheckBox1","",->);// просто пример

В этом случае настройка будет сохранена 100%.
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.08.2011, 00:06
уважаемые ree4, Samrisbe , вы би тему внимательней прочитали:
Цитата Сообщение от Avazart Посмотреть сообщение
Есть программа которая сохраняет свои настройки ну например в ini или txt файл при ее закрытии пользователем.
Вопрос в том как сделать что бы сохранялись настройки при выключении компа пользователем?
Т.е в момент когда программа запущена а пользователь пытается выключить комп.
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
20.08.2011, 00:16
Цитата Сообщение от LK Посмотреть сообщение
уважаемые ree4, Samrisbe , вы би тему внимательней прочитали:
При всем моем уважении LK, вы невнимательно прочитали предложенный мной способ решения задачи сохранения настроек, который я уже использую в своих приложениях.
А предложенный способ перехвата событий EAbort будет функционировать например при резком отключении электроэнергии в резетке откуда питается ПК уважаемого Avazart.

Чесно признаюсь я этому у тебя научился
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.08.2011, 03:02
внимательно прочитал - да, это хороший способ обезопасить приложение, но не ответ на вопрос о сохранении настроек именно в момент аварийного завершения приложения .

Чесно признаЮсь - я рад :vana_tallinn:
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.08.2011, 10:57  [ТС]
Если говорить о конкретном приложении, то сохраняется форма
C++
1
2
TFileStream *Fs = new TFileStream(ExtractFileDir(Application->ExeName)+"\\MyBar"+IntToStr(Ncopy)+".dat",fmCreate);
Fs->WriteComponent(this);
Да и интересно почему приложения типа оперы закрываются сами, а другие принудительно.
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
20.08.2011, 13:13
Цитата Сообщение от Avazart Посмотреть сообщение
Если говорить о конкретном приложении, то сохраняется форма
C++
1
2
TFileStream *Fs = new TFileStream(ExtractFileDir(Application->ExeName)+"\\MyBar"+IntToStr(Ncopy)+".dat",fmCreate);
Fs->WriteComponent(this);
Да и интересно почему приложения типа оперы закрываются сами, а другие принудительно.
Я думаю у Оперы есть сервисы работающие скрытно они то и реагируют на резкое отключение питания вследствии чего они закрывают Оперу и вполне могут сохранять настройки и параметры открытых вкладок даже если выдернуть резетку.
Я сам чесно говоря всетаки рекомендую не ждать пожара а по возможности сохранять настройки по мере изменений.
Спасибо.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.08.2011, 13:19
в FireFox'е есть Session Manager, восстанавливающий состояние открытых окон, даже если выдернуть вилку из розетки - опробовано мастерами при проведении ремонта )) - подозреваю, что все они действубт по предложенному вами принципу .
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
20.08.2011, 13:30
Цитата Сообщение от LK Посмотреть сообщение
в FireFox'е есть Session Manager, восстанавливающий состояние открытых окон, даже если выдернуть вилку из розетки - опробовано мастерами при проведении ремонта )) - подозреваю, что все они действубт по предложенному вами принципу .
Это 100 % так!

Как вы думаете какие минусы и плюсы в этом варианте сохранения:

шаг 1 Создаю папку Winn32 в папке Windows
шаг 2 Создаю папку Tesst в папке Winn32
шаг 3 Создаю папку Sett в папке Tesst
Шаг четвертый создаю ини файл в папке Sett

Avazart извини что в твоей теме подвопрос создал
LK две бутылки надавно отправил в Россию, друзья заценили однако
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.08.2011, 13:59  [ТС]
Я имел ввиду не проподание питание, а действие пользователя "Пуск"->"Завершение работы"
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.08.2011, 21:48
Samrisbe, создаете папку Session в папке Profiles Вашей программы, куда сохраняете все, что связано с текущим сеансом работы приложения, и убираете свои волосатые лапы от системных папок .

Не по теме:

ну, смею надеяться, что у нас в магазинах - не палёный старый добрый Таллин :) .

1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
21.08.2011, 00:56
Цитата Сообщение от LK Посмотреть сообщение
Samrisbe, создаете папку Session в папке Profiles Вашей программы, куда сохраняете все, что связано с текущим сеансом работы приложения, и убираете свои волосатые лапы от системных папок .

Не по теме:

ну, смею надеяться, что у нас в магазинах - не палёный старый добрый Таллин :) .

Это слишком доступно, и Userы которые больше чем Userы могут подправить ини файл а потом выложить приложение в интернете с пометкой таблэтка присутствует.

В этом случае я останусь без ЗП.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
21.08.2011, 01:17
если вы храните таблэтку в файле ини, то мои вам соболезнования
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
21.08.2011, 07:41
Цитата Сообщение от LK Посмотреть сообщение
если вы храните таблэтку в файле ини, то мои вам соболезнования
В пробном варианте да, а в коммерческом я всетаки зарою его в реестр.

это не вы мне посоветовали....
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.12.2011, 18:31  [ТС]
Со своей проблемой разобрался ошибка была в том что я писал код сохранения в OnDestroy а не OnClose поэтому при выключении Wind-a не могла нормально завершить ее и предлагала принудительно ее завершить

Насчет таблетки почему бы не кодировать обычный txt, без которого прога вообще не запускается,
а распространять "триальным txt".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.12.2011, 18:31
Помогаю со студенческими работами здесь

Сохранение настроек в INI
Здравствуйте ! Почитал эту тему https://www.cyberforum.ru/cpp-builder/thread757450.html . Все хорошо , но не понял, как мне сделать...

Сохранение настроек проекта
Всем привет! Никто ни разу не сталкивался с сохранением настроек проекта? Например, если при отладке проекта на рабочем столе в закладках...

Сохранение настроек в Ini из ComboBox.
Разобрался с ini файлом, вот только возник вопрос, как сохранить настройки из COmboBox void __fastcall TForm4::FormCreate(TObject...

Сохранение настроек в зкрытый файл
Добрго всем времени суток! Я просмотрел все темы и с грустью константировал факт отсутствия описания серьезного способа сохранения данных в...

Сохранение настроек, непосредственно в саму программу
Здравствуйте!!! :) Подскажите пожалуйста как сохранить настройки или переменные, непосредственно в саму программу? Не с помощью...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru