Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2018, 16:45   #1
Devil9313
Пользователь
 
Регистрация: 06.05.2013
Сообщений: 27
По умолчанию ini file

Доброго времени суток форумчане у возникла не то чтобы проблема в общем сделала в программе сохранение настроек и меня не особо устраивает громосткий код с повторением
есть ли какой нибудь способ сделать сохранение настроек по компактнее ?


Вот код сохранения настроек

Код:
SettingsINI := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'P_Devil9313');
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox1', CheckBox1.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox2', CheckBox2.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox3', CheckBox3.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox4', CheckBox4.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox5', CheckBox5.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox6', CheckBox6.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox7', CheckBox7.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox8', CheckBox8.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox9', CheckBox9.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox10', CheckBox10.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox11', CheckBox11.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox12', CheckBox12.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox13', CheckBox13.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox14', CheckBox14.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox15', CheckBox15.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox16', CheckBox16.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox17', CheckBox17.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox18', CheckBox18.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox19', CheckBox19.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox20', CheckBox20.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox21', CheckBox21.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox22', CheckBox22.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox23', CheckBox23.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox24', CheckBox24.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox25', CheckBox25.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox26', CheckBox26.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox27', CheckBox27.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox28', CheckBox28.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox29', CheckBox29.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox30', CheckBox30.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox31', CheckBox31.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox32', CheckBox32.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox33', CheckBox33.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox34', CheckBox34.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox35', CheckBox35.Checked);
 SettingsINI.WriteBool('PROFILE_A', 'CheckBox36', CheckBox36.Checked);
 SettingsINI.Free;

Код:
SettingsINI := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'P_Devil9313');
 CheckBox1.Checked := SettingsINI.ReadBool('PROFILE_A','CheckBox1', CheckBox1.Checked);
 CheckBox2.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox2', CheckBox1.Checked);
 CheckBox3.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox3', CheckBox2.Checked);
 CheckBox4.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox4', CheckBox3.Checked);
 CheckBox5.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox5', CheckBox4.Checked);
 CheckBox6.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox6', CheckBox5.Checked);
 CheckBox7.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox7', CheckBox6.Checked);
 CheckBox8.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox8', CheckBox7.Checked);
 CheckBox9.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox9', CheckBox8.Checked);
 CheckBox10.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox10', CheckBox9.Checked);
 CheckBox11.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox11', CheckBox10.Checked);
 CheckBox12.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox12', CheckBox11.Checked);
 CheckBox13.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox13', CheckBox12.Checked);
 CheckBox14.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox14', CheckBox13.Checked);
 CheckBox15.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox15', CheckBox14.Checked);
 CheckBox16.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox16', CheckBox15.Checked);
 CheckBox17.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox17', CheckBox16.Checked);
 CheckBox18.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox18', CheckBox17.Checked);
 CheckBox19.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox19', CheckBox18.Checked);
 CheckBox20.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox20', CheckBox19.Checked);
 CheckBox21.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox21', CheckBox20.Checked);
 CheckBox22.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox22', CheckBox21.Checked);
 CheckBox23.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox23', CheckBox22.Checked);
 CheckBox24.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox24', CheckBox23.Checked);
 CheckBox25.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox25', CheckBox24.Checked);
 CheckBox26.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox26', CheckBox25.Checked);
 CheckBox27.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox27', CheckBox26.Checked);
 CheckBox28.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox28', CheckBox27.Checked);
 CheckBox29.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox29', CheckBox28.Checked);
 CheckBox30.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox30', CheckBox29.Checked);
 CheckBox31.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox31', CheckBox30.Checked);
 CheckBox32.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox32', CheckBox31.Checked);
 CheckBox33.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox33', CheckBox32.Checked);
 CheckBox34.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox34', CheckBox33.Checked);
 CheckBox35.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox35', CheckBox34.Checked);
 CheckBox36.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox36', CheckBox36.Checked);
 SettingsINI.Free;
еще мне нужно сделать сохранение нескольких настроек settings1.ini settings2.ini и settings3.ini и чтобы при запуске программы в MainMenu подгружались эти 3 ini файла и по выбору пользователя загружать настройки программы
Devil9313 вне форума Ответить с цитированием
Старый 07.08.2018, 17:33   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

перебрать все чекбоксы на форме и записать в INI легко в цикле:

Код:
var i : integer;
begin
  SettingsINI := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'P_Devil9313');
  for i:= 0 to ComponentCount - 1 do
      if Components[i] is TCheckBox then 
             SettingsINI.WriteBool('PROFILE_A', TCheckBox(Components[i]).Name, TCheckBox(Components[i]).Checked);
  SettingsINI.Free;
end;

p.s. чтение делается полностью аналогично

p.p.s. "громоздкий"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.08.2018, 18:47   #3
Devil9313
Пользователь
 
Регистрация: 06.05.2013
Сообщений: 27
По умолчанию

Чтение что-то не работает поменял на ReadBool но это ничего не дало

Код:
procedure TForm1.N8Click(Sender: TObject);
begin
 SettingsINI := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'P_Devil9313');
 for i:= 0 to ComponentCount - 1 do
 if Components[i] is TCheckBox then
  SettingsINI.ReadBool('PROFILE_A', TCheckBox(Components[i]).Name, TCheckBox(Components[i]).Checked);
  SettingsINI.Free;
end;
Devil9313 вне форума Ответить с цитированием
Старый 07.08.2018, 18:53   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

ReadBool функция же, см как в #1
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2018, 19:40   #5
Devil9313
Пользователь
 
Регистрация: 06.05.2013
Сообщений: 27
По умолчанию

запись работает отлично а вот использую антологично туже функцию на чтение прописываю не WriteBool А ReadBool и чтение не работает

в своем громоздком коде читал вот так
Код:
CheckBox33.Checked := SettingsINI.ReadBool('PROFILE_A', 'CheckBox33', CheckBox32.Checked);
Devil9313 вне форума Ответить с цитированием
Старый 07.08.2018, 19:40   #6
Devil9313
Пользователь
 
Регистрация: 06.05.2013
Сообщений: 27
По умолчанию

а как быть с тем что мне дали ?

Последний раз редактировалось Devil9313; 07.08.2018 в 19:43.
Devil9313 вне форума Ответить с цитированием
Старый 07.08.2018, 20:15   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
TCheckBox(Components[i]).Checked:=SettingsINI.ReadBool('PROFILE_A', TCheckBox(Components[i]).Name, TCheckBox(Components[i]).Checked);
Цитата:
CheckBox32.Checked
а чего умолчание для CheckBox33.Checked из CheckBox32.Checked?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.08.2018, 09:03   #8
Devil9313
Пользователь
 
Регистрация: 06.05.2013
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
а чего умолчание для CheckBox33.Checked из CheckBox32.Checked?
перепутал чекбоксы спасибо исправил
а как быть насчет подгрузки сохраненных настроек если их несколько нужно подгружать их в MainMenu
Devil9313 вне форума Ответить с цитированием
Старый 08.08.2018, 09:11   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Devil9313 Посмотреть сообщение
перепутал чекбоксы спасибо исправил
боюсь спрашивать...
исправили, надеюсь на
Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
TCheckBox(Components[i]).Checked:=SettingsINI.ReadBool('PROFILE_A', TCheckBox(Components[i]).Name, TCheckBox(Components[i]).Checked);

Цитата:
Сообщение от Devil9313 Посмотреть сообщение
а как быть насчет подгрузки сохраненных настроек если их несколько нужно подгружать их в MainMenu
простите, а в чём проблема то?
Как выбрать вариант загрузки?
Так, например, можно использовать OpenDialog и поручить выбирать нужный INI пользователю программы.
Можно просканировать все INI в определённой папке и вывести их имена в контрол для выбора (ComboBox, ListBox) или даже в MainMenu добавить подпункты на каждый найденный файл.
Вы программист - Вам и выбирать UI.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.08.2018, 10:38   #10
Devil9313
Пользователь
 
Регистрация: 06.05.2013
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
боюсь спрашивать...
исправили, надеюсь на




простите, а в чём проблема то?
Как выбрать вариант загрузки?
Так, например, можно использовать OpenDialog и поручить выбирать нужный INI пользователю программы.
Можно просканировать все INI в определённой папке и вывести их имена в контрол для выбора (ComboBox, ListBox) или даже в MainMenu добавить подпункты на каждый найденный файл.
Вы программист - Вам и выбирать UI.
Проблема в том что я пытался не подгружается в MainMenu.
через opendialog я знаю как прогружать,а вот при старте программы в MainMenu как загрузить не знаю,пытался не выходит
Devil9313 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если в основном файле проекта (где есть функция main) есть #include "file.hpp", и в файле file.cpp есть #include "file.hpp", то как компилятор узнает, что нам нужен файл file.cpp? Андрей 93 Общие вопросы C/C++ 13 21.12.2016 16:03
C1083: Cannot open include file: 'd3dx9.h': No such file or directory CrowleyNoob Общие вопросы C/C++ 15 18.09.2016 21:55
В чём разница между unit, header file, cpp file? TwiX Общие вопросы C/C++ 6 29.04.2012 19:49
Как записывать и считывать Ini File с набором строк (#10#13) в одном параметре?) SkAndrew Общие вопросы Delphi 4 15.11.2008 00:02