Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение данных в INI, из ListView 
:(
    Опции темы
andrey_post
  Дата 19.1.2004, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



 Мне необходимо сохранить данные из ListView в файл INI. Но вот как зделать сохранение данных из ListView не знаю. Вот как я обычно сохраняю другие элементы:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  F: TIniFile;
  Loop: Integer;
  basenum:string;
begin
  for Loop := 0 to Listbox1.Items.Count - 1 do
    if Listbox1.Selected[Loop] then     //из ListBox выбирается база для сохранения
     basenum:=IntToStr(Loop);
     F := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'base'+basenum+'.ini');
     F.WriteString('tools', 'edit1', Edit1.Text);                                     //записываем текст
     F.WriteInteger('tools', 'const1', StrToIntDef(Edit2.Text, 0));       //записываем число
     F.WriteBool('tools', 'check1', CheckBox1.Checked);                    //Записываем булевые значения
     F.WriteBool('tools', 'radio1', RadioButton1.Checked);
     F.Free;
end;


В ListView у меня есть как Item так и SubItems... каждое сожержимое Item'а так и SubItem'а должно записываться в каждую строчку INI-файла:
Напромер:
...
Item1=помогите
SubItem1=пожалуйста
...

////////////////////////
F.WriteString('tables', 'list1', ListView1...);   что дальше?  smile   
--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
Kesh
Дата 19.1.2004, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 4
Всего: 54



Код
 ListView1.Items[Loop].Caption



--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
DriveSoftware
Дата 19.1.2004, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 17.3.2003

Репутация: нет
Всего: 4



Я сохраняю в типизированый файл smile.gif

В твоем случае можно так:
Код

var
 S: String;
begin
S:=ListView1.Items.Item [0].Caption; //первая колонка
S:=ListView1.Items.Item [0].SubItems[0];//вторая
S:=ListView1.Items.Item [0].SubItems[1];//третья
ShowMessage(S);


[сюды CAPTION]
Subitems0=Value
Subitems1=Value


PM MAIL WWW ICQ   Вверх
andrey_post
  Дата 19.1.2004, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



С сохранением я понял, делается вот так:
Код

begin
     for i:=0 to ListView1.Items.Count -1 do
       Begin
            F.WriteString('tools', 'valutaa'+IntToStr(i), ListView1.Items.Item[i].Caption);
            F.WriteInteger('tools', 'valutab'+IntToStr(i), ListView1.Items.Item[i].SubItems[0]);
            F.WriteString('tools', 'valutac'+IntToStr(i), StrToIntDef(ListView1.Items.Item[i].SubItems[1],0));
       end;
end;


А как сейчас загрузить обратно?

Пример загрузки:
Код

begin
 for Loop := 0 to Listbox1.Items.Count - 1 do
   if Listbox1.Selected[Loop] then
     basenumber:=IntToStr(Loop);
     F := TIniFile.Create(ExtractFilePath(ParamStr(0)) + ('bankbase'+basenumber+'.ini');
     Edit3.Text := F.ReadString('tools', 'edit3', 'no text');


--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
DriveSoftware
Дата 19.1.2004, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 17.3.2003

Репутация: нет
Всего: 4




в цикле
Код

 frmOption.ListView1.Items.Add;

 frmOption.ListView1.Items.Item [K].Caption:=строка; {valutaa}
 frmOption.ListView1.Items.Item [K].SubItems.Add (строка); {valutab}
 frmOption.ListView1.Items.Item [K].SubItems.Add (строка); {valutac}

PM MAIL WWW ICQ   Вверх
andrey_post
  Дата 20.1.2004, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



То что в цикле я понял, так и написал у себя в проге:
Код


ListView1.Items.Item [i].Caption := F.ReadString('tools', 'valutaa'+IntToStr(i), '0');
ListView1.Items.Item [i].SubItems.Add (F.ReadString('tools', 'valutab'+IntToStr(i), '0'));
ListView1.Items.Item [i].SubItems.Add (F.ReadString('tools', 'valutac'+IntToStr(i), '0'); //*);



А как поставить цикл от 0 до скольки? thumbs-up.gif

--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
andrey_post
  Дата 20.1.2004, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



INI-файл выглядит так:
[tables]
valutaa0=RUR
valutab0=33
valutac0=Российский Рубль
valutaa1=USD
valutab1=25
valutac1=Американский доллар

Вот попробовал так считать из INI-файла:
Код

begin
       tables := TStringList.Create;
       F.ReadSection('tables', tables); //читаем секцию [tables]
       for i:=0 to tables.Count - 1 do
       begin
       ListView1.Items.Item[i].Caption:=F.ReadString('valutaa'+IntToStr(i), tables.Strings[i], '');
       ListView1.Items.Item[i].SubItems.Add(F.ReadString('valutab'+IntToStr(i), tables.Strings[i], ''));
       ListView1.Items.Item[i].SubItems.Add(F.ReadString('valutac'+IntToStr(i), tables.Strings[i], ''));
       end;
       tables.Destroy;
    end;


Не получается, выбается ошибка приложения... confused.gif
--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
DriveSoftware
Дата 20.1.2004, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 17.3.2003

Репутация: нет
Всего: 4



Пройдись по циклу по шаговой отладкой (F7 или F8) и посмотри где ошибка, взгляни на значения.

Вообщем должно работать, ошибка может быть если
tables.Count = 0

PM MAIL WWW ICQ   Вверх
DriveSoftware
Дата 20.1.2004, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 17.3.2003

Репутация: нет
Всего: 4



ДА! ты еще забыл в самом начале цикла
ListView1.Items.Add;
PM MAIL WWW ICQ   Вверх
andrey_post
Дата 20.1.2004, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



Все с этим делом разобрался...
осталось последнее, мне нужно синхронизировать ListView1 с ComboBox1. Т.е. все что есть в ListView1 добавляется в ComboBox1, а потом выбранный элемент в ComboBox1 сохраняется в INI-файл.

Начинаю синхронизировать ListView1 с ComboBox1:
Код

begin
     for i:=0 to ListView1.Items.Count -1 do
       ComboBox1.Items.Add(ListView1.Items.Item[i].Caption);
end;


Все окей, а вот когда пытаюсь сохранить в INI вот тут и есть загвоздка. Как сохранить значение (Caption) выбранного значения в ComboBox1?

Код


...

B.WriteString('tools', 'combocaption', ComboBox1...что тут вставить?);

...


--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 20.1.2004, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Код
ComboBox1.Text
smile.gif


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Medved
Дата 20.1.2004, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата(andrey_post @ 20.1.2004, 21:28)
Все с этим делом разобрался...
осталось последнее, мне нужно синхронизировать ListView1 с ComboBox1. Т.е. все что есть в ListView1 добавляется в ComboBox1, а потом выбранный элемент в ComboBox1 сохраняется в INI-файл.

Модератор: Один топик - один вопрос. Прочитайте правила форума.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Unregistered
Дата 21.1.2004, 03:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Хочу напомнить.
Стандартный класс TIniFile может работать только с файлами не больше 64Кб -- как и все инишки в Windows.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3917 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.