Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/35: Рейтинг темы: голосов - 35, средняя оценка - 4.63
20 / 3 / 3
Регистрация: 08.05.2011
Сообщений: 195
1

Запись в ini файл

08.05.2011, 21:09. Показов 6462. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
на форме расположен Edit (туда записываетя вопрос)
Форма Checklistbox и баттен который записывает информацию о выделенных и невыделенных Items в ини файл.
Вопрос как надо подправить чтобы он считывал Текст(вопрос) с Edit и записывал тоже в ini файл.
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.Button2Click(Sender: TObject); 
 begin
 ini := TIniFile.Create('C:\Documents and Settings\vopros.ini');
 try
 for i := 0 to Checklistbox1.Items.Count - 1 do
 ini.WriteBool('items',Checklistbox1.Items[i], Checklistbox1.Checked[i]);
 finally
 ini.Free;
 end;
В начале структура ini выглядет так
[items]
1=0
2=1
3=0
1=1
2=0
3=0
а надо что бы выглядела так
[items]
Вопрос 1-ый
1=0
2=1
3=0
Вопрос 2-ый
1=1
2=0
3=0
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.05.2011, 21:09
Ответы с готовыми решениями:

Запись и чтение. ini файл
Делаю файл с настройками. При открытии программы создаю файл из Project1 //создание файла в...

Запись данных в INI файл
Задача следующая: хочу записывать в INI-файл данные о спортсмене так, что бы каждая последующая...

Запись Содержимого, Combobox в ini файл
Здравствуйте ув. программисты. Столкнулся с проблемой. как записать содержимое Combobox1 в ini файл...

Запись в INI файл значение Radiobutton и чтение значения
Доброго времени суток. У меня имеется программа с 7 формами, хочу сделать, чтобы при закрытии...

24
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
08.05.2011, 21:40 2
что должно быть как комментарий вопрос 1, вопрос 2 ? Или что имеется ввиду что оно стоит там между строками?
0
20 / 3 / 3
Регистрация: 08.05.2011
Сообщений: 195
08.05.2011, 21:41  [ТС] 3
Нет не как комментарий.... это идёт название вопроса и далее ответы, потом следующий вопрос и опять варианты ответов
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
08.05.2011, 21:43 4
ну тогда продолжать строить блоки, как у вас Items, чтобы новое задание было в отдельном блоке

Или??

Добавлено через 1 минуту
блок называть vopros1, vopros2 и так далее
0
20 / 3 / 3
Регистрация: 08.05.2011
Сообщений: 195
08.05.2011, 21:46  [ТС] 5
Типо новый блок назвать Items2 и т.д , вы это имеете в виду?

Добавлено через 13 секунд
Подскажите как тогда=)
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
08.05.2011, 21:53 6
Delphi
1
ini.WriteBool('items'+IntToStr(i+1),Checklistbox1.Items[i], Checklistbox1.Checked[i]);
ну как-то вот так например

Илия не знаю как у вас хранятся данные в листчекбоксе, тогда по какому нибудь условию придумать вот это чтобы цифра становилась сзади слова
Delphi
1
'items'+IntToStr(i+1)
Добавлено через 3 минуты
например если в нем хранятся так, что по 3 всегда, то условием
Delphi
1
2
3
4
5
if i mod 3 = 0 then 
begin
  k := k+1;
  ini.WriteBool('items'+IntToStr(k+1),Checklistbox1.Items[i], Checklistbox1.Checked[i]);
end;
k - какая-нибудь переменная счетчик
0
20 / 3 / 3
Регистрация: 08.05.2011
Сообщений: 195
08.05.2011, 21:54  [ТС] 7
Почти получилось, но у меня формируются блоки только по 2 значения( если 1 вопрос содержит 6 вариантов ответов, то оно разбивается на 3 блока )
[items1]
1=0
q=0
[items2]
2=0
w=1
[items3]
3=1
e=0
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
08.05.2011, 21:56 8
условия в помощь
0
20 / 3 / 3
Регистрация: 08.05.2011
Сообщений: 195
08.05.2011, 22:09  [ТС] 9
мб картинка всё обьяснит =)
http://imglink.ru/show-image.p... 0147baef4a
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
08.05.2011, 22:33 10
вот как написано, каждый новый вопрос - новый блок, чем именно создается вопрос? каким то обработчиком? типа кнопку тыкнуть чтобы перейти к созданию 2 вопроса?

и вот где происходит создание вопроса - увеличиваем в вышеописанном коде k
0
20 / 3 / 3
Регистрация: 08.05.2011
Сообщений: 195
08.05.2011, 22:37  [ТС] 11
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button2Click(Sender: TObject); 
 var i:integer;
begin
 ini := TIniFile.Create('C:\Documents and Settings\AdDa\Рабочий стол\Пз\курсач\checklistbox.ini');
 try
 for i := 0 to Checklistbox1.Items.Count - 1 do
 ini.WriteBool('items' ,Checklistbox1.Items[i], Checklistbox1.Checked[i]);
 finally
 ini.Free;
 end;
   CheckListBox1.Clear;
   Edit1.Clear;
   Edit2.Clear;
   end;
Вот при нажатии записывается в файл и очищается...
Поправьте пожалуйста мой код как надо, если не сложно
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
08.05.2011, 22:49 12
думаю что так будет работать так как надо
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Button2Click(Sender: TObject); 
 var i:integer;
begin
 k := k+1; // лучше сделать глобальной;  var k: Integer; где-то сверху программы
 ini := TIniFile.Create('C:\Documents and Settings\AdDa\Рабочий стол\Пз\курсач\checklistbox.ini');
 try
 for i := 0 to Checklistbox1.Items.Count - 1 do
 ini.WriteBool('items'+IntToStr(k) ,Checklistbox1.Items[i], Checklistbox1.Checked[i]);
 finally
 ini.Free;
 end;
   CheckListBox1.Clear;
   Edit1.Clear;
   Edit2.Clear;
   end;
а не проще будет делать ini в той же папке что и проект, а то так постоянно адрес менять нужно

сделать можно следующим образом
Delphi
1
ini := TIniFile.Create(ExtractFilePath(ParamStr(0)+'test.ini'))
думаю так будет корректнее работать если понадобится таскать программу с компа на комп
0
20 / 3 / 3
Регистрация: 08.05.2011
Сообщений: 195
08.05.2011, 22:58  [ТС] 13
Всё работает спс биг
а про это
Delphi
1
ini := TIniFile.Create(ExtractFilePath(ParamStr(0)+'test.ini'))
у меня так не сохраняет почему то....

Добавлено через 3 минуты
а при считывании информации из ini файла
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button3Click(Sender: TObject);
begin
   ini := TIniFile.Create('C:\Documents and Settings\AdDa\Рабочий стол\Пз\курсач\checklistbox.ini');
   try
     ini.ReadSection('items', Checklistbox2.Items);
     for i := 0 to Checklistbox2.Items.Count - 1 do
       CheckListbox2.Checked[i] := ini.ReadBool('items', Checklistbox2.Items[i], False);
   finally
     ini.Free;
   end;
 end;
Что нужно подставить?
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
08.05.2011, 23:03 14
потому что ошибочка маленькая

Delphi
1
ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'test.ini')
а спасибо сказать +1 нажать

Добавлено через 5 минут
ну а как считываем из секции? так же задаем какой вопрос считывать будем, мы же это будем знать? И так же подгоним в секцию название откуда читать, аналогия записи
1
20 / 3 / 3
Регистрация: 08.05.2011
Сообщений: 195
08.05.2011, 23:06  [ТС] 15
Ну если не трудно покажите как будем считывать из 2-ой секции ....
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
08.05.2011, 23:33 16
нужно думаю добавить что-то, что сможет нам обращаться в каждой секции, скажем это будет комбобокс, в него запишем следующее, одновременно с тем как будем записывать в ini файл, а запишем следующее, возьмем комбобокс

вот мы записываем...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button2Click(Sender: TObject); 
 var i:integer;
begin
 k := k+1; // лучше сделать глобальной;  var k: Integer; где-то сверху программы
 ComboBox1.Items.Add('items'+IntToStr(k));
 ini := TIniFile.Create('C:\Documents and Settings\AdDa\Рабочий стол\Пз\курсач\checklistbox.ini');
 try
 for i := 0 to Checklistbox1.Items.Count - 1 do
 ini.WriteBool('items'+IntToStr(k) ,Checklistbox1.Items[i], Checklistbox1.Checked[i]);
 finally
 ini.Free;
 end;
   CheckListBox1.Clear;
   Edit1.Clear;
   Edit2.Clear;
   end;
так у нас есть в комбобоксе теперь items<тут номер item'a>

далее считываем при выборе из комбобокса какого-то item'a

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button3Click(Sender: TObject);
begin
   ini := TIniFile.Create('C:\Documents and Settings\AdDa\Рабочий стол\Пз\курсач\checklistbox.ini');
   try
     ini.ReadSection('items', Checklistbox2.Items); // тут наверно тоже нужно будет добавить что описано ниже, проверьте
     for i := 0 to Checklistbox2.Items.Count - 1 do
       CheckListbox2.Checked[i] := ini.ReadBool(ComboBox1.Text, Checklistbox2.Items[i], False); // то //есть название item'a будет у нас являться названием секции в файле, теперь выбрали в //комбобоксе, у нас подставилось далее  программе и все красиво заработало :)
   finally
     ini.Free;
   end;
 end;

думаю заработает

Добавлено через 4 минуты
Мда... ну я и описал в самом верху предположение, перечитал и сам засмеялся со своих формулировок
1
20 / 3 / 3
Регистрация: 08.05.2011
Сообщений: 195
08.05.2011, 23:42  [ТС] 17
Всё получилось.... спасиб вам биг
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
08.05.2011, 23:44 18
работает так? А то я первый раз без дельфи сегодня отвечал
0
20 / 3 / 3
Регистрация: 08.05.2011
Сообщений: 195
08.05.2011, 23:46  [ТС] 19
да да работает всё, шас только сделать так чтобы пользователь сам выбирал номер и всё... это я думаю я сам смогу)
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
08.05.2011, 23:49 20
ну я рад что получилось

Не по теме:


Кстати мне наверно на форуме завтра лучше не появляться, а то еще застрелите :D - смотри Адрес

0
08.05.2011, 23:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2011, 23:49
Помогаю со студенческими работами здесь

Установка пароля (Запись, Редактирование) для программы в ini-файл
Привет всем! Народ как мне записать пароль для авторизации в программе в ini файл. Потом его...

Запись ID INI секции
Добрый день форумчане! Вот появился один вопросик как сделать запись ID секции INI,то есть номер...

CheckBox запись состояния в ini
Как записать состояние CheckBox в ini чтобы при повторном запуске программы они сохранили своё...

Тест (брать с ini случайную запись)
Помогите реализовать маленькую но мне нужную программку для подготовки к вступительным экзаменам ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru