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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2010, 20:04   #1
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
Восклицание Чтение ReadBool из Ini в CheckBox

Ув, натоки, а подскажите как решить по-быстрому проблему.

вот пример кода

Код:
procedure TForm1.EditIni;
begin
  Ini:=TiniFile.Create(extractfilepath(Application.ExeName)+'Ini.ini');
  Ini.WriteBool('ГЛАВНОЕ','Дни',sCheckBox1.Checked); // тут он записывает либо 1 либо 0
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Ini:=TiniFile.Create(extractfilepath(Application.ExeName)+'Ini.ini');
  sCheckBox1.Checked := Ini.ReadBool('ГЛАВНОЕ','Дни',true); // а тут он считывает единицу, но не воспринимает ее как true
end;
Как считывая единицу и принимать ее за true?
Либо, как писать в WriteBool слово true вместо единицы?


Просто не охото писать отдельно обработчик, который будет воспринимать 1 как true и наоборот!!!

Последний раз редактировалось iskurt; 04.12.2010 в 20:06. Причина: дописать
iskurt вне форума Ответить с цитированием
Старый 04.12.2010, 20:32   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

причем тут единица то?
у вас что сохранено то и будет прочитано.
третий параметр функций TINIFile.read*** служит для задания значений по умолчанию(то есть если в файле такого параметра нет)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.12.2010, 21:23   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Правильно будет вот так
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Ini:=TiniFile.Create(extractfilepath(Application.ExeName)+'Ini.ini');
  sCheckBox1.Checked := Ini.ReadBool('ГЛАВНОЕ','Дни',sCheckBox1.Checked); 
// или
  sCheckBox1.Checked := Ini.ReadBool('ГЛАВНОЕ','Дни', not sCheckBox1.Checked);
end;
Я бы в конце процедуры добавил
Код:
ini.Free;
_SERGEYX_ вне форума Ответить с цитированием
Старый 05.12.2010, 00:56   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Сообщение от iskurt Посмотреть сообщение
Код:
  sCheckBox1.Checked := Ini.ReadBool('ГЛАВНОЕ','Дни',true); // а тут он считывает единицу, но не воспринимает ее как true
Смешно. У всех "он" воспринимает как надо, а у автора нет. "Он" совсем обнаглел. Пора ему всыпать.
Прик вне форума Ответить с цитированием
Старый 05.12.2010, 09:07   #5
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

Ну екарный бабай, мужики.... когда sCheckBox1.Checked := true;
то в ini пишеться 1. Когда я считываю этот параметр в sCheckBox1.Checked, то параметр 1 не воспринимает.....
Может нужно пробовать не sCheckBox1.Checked , а стандартный CheckBox1.Checked
iskurt вне форума Ответить с цитированием
Старый 05.12.2010, 09:59   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я так и не понял где именно проблема.
такое чувство что вы пытаетесь в Checked сунуть единицу(не с ини файла а просто)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.12.2010, 10:04   #7
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

Так, пишу в подробностях..... когда ставлю галочку в боксе, в ини пишется 1
вот примет
[ГЛАВНОЕ]
Дни=1

при запуске программы, эта единица должна считаться как булевое значение и присвоить в sCheckBox1.Checked := true, но это не происходит.... вопрос, ПОЧЕМУ?

Код:
sCheckBox1.Checked := Ini.ReadBool('ГЛАВНОЕ','Дни',true);
вот так правильно записывать?

Последний раз редактировалось iskurt; 05.12.2010 в 10:06.
iskurt вне форума Ответить с цитированием
Старый 05.12.2010, 10:08   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

то есть после кода этого галочки все равно нет?
а если поставить просто
Код:
sCheckBox1.Checked :=true;
результат каков?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.12.2010, 10:09   #9
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

в ини пишеться единица....
iskurt вне форума Ответить с цитированием
Старый 05.12.2010, 10:10   #10
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Сообщение от iskurt Посмотреть сообщение
Ну екарный бабай, мужики.... когда sCheckBox1.Checked := true;
то в ini пишеться 1. Когда я считываю этот параметр в sCheckBox1.Checked, то параметр 1 не воспринимает.....
Может нужно пробовать не sCheckBox1.Checked , а стандартный CheckBox1.Checked
А ini-файлу какая разница, булево свойство Checked у стандартного комбобокса или не у стандартного.
Попытайтесь прочесть эту единицу в переменную типа boolean. Что будет.
Потом присвойте ее Checked'у комбобокса. Надо же как-то проблему локализовать, если она, действительно, есть.
Присоединяясь к Пепел Феникса, тоже не понимаю в чем проблема то. Да, пишет единицу, да читает как единицу, но преобразует в тип boolean в своей внутренней реализации. И что значит "не воспринимает"?
Прик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение с INI файла. Baaandit Общие вопросы Delphi 3 26.11.2009 17:15
Чтение пароля с ini файла mish@ Общие вопросы Delphi 7 05.11.2009 10:43
чтение из ini динамических компонентов varelik Общие вопросы Delphi 2 03.09.2009 17:35
Чтение параметров из ini файла Яр|/||< (^_^) Общие вопросы Delphi 2 29.06.2009 20:54