|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Чтение из ini файла
Есть 2 процедуры, одна пишет данные из listBox в ini файл, другая наоборот, считывает из ini в listBox. Как раз при чтении происходит ошибка: List index out of bounds (0)
Код:
procedure TForm1.N18Click(Sender: TObject); //сохранить список var F: TIniFile; i:integer; begin if ListBox1.Count>0 then begin F := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'PlayList.ini'); F.EraseSection('Track'); for i := 0 to ListBox1.Count - 1 do F.WriteString('Track', InttoStr(i), ListBox1.Items[i]); end; end; procedure TForm1.N19Click(Sender: TObject); //восстановить список var F: TIniFile; i:integer; begin if listBox2.Visible then begin ListBox1.Clear; ListBox2.Clear; begin i:=0; F := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'PlayList.ini'); Repeat ListBox1.Items.Add(F.ReadString('Track',Inttostr(i), ListBox1.Items[i])); listbox2.Items.Add(ExtractFileName(listBox1.Items[i])); i:=i+1; Until(EOF) ; end; end; end; Помогите пожалуйста. |
#2
|
||||
|
||||
Возможно ListBox1.Items[i] пуст.
Сверяй с коунтом. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
Так по-моему, ListBox1.Items[i] должен считаться с самого файла
|
#4
|
||||
|
||||
Вот смотри, ты сначала чистишь списки, у тебя у них Count == 0, далее ты делаешь Add, по дефолту передаешь значение из ListBox1.Items[i], т.к. список пуст, ты получаешь исключение. Внимательнее на код смотрим.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
Тогда такой вопрос - как получить именно то значение, которое записано в файл?
|
#6
|
||||
|
||||
Код:
F.ReadString('Track',Inttostr(i), EmptyStr) — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#7
|
|||
|
|||
Спасибо за ответы.
Попробовал emptyStr добавить, из файла прочиталась первая строка и вылезла ошибка I/O error 6 |
#8
|
||||
|
||||
Until(EOF) ;
Ай-яй-яй!!! Притянуто за уши, да не то. Вообще, я бы сначала записывал бы Count (сколько всего файлов), а потом в форе шел бы по секциям F.ReadString('file' + inttostr(i), ... — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 09.04.2011 в 20:23. |
#9
|
|||
|
|||
Да, я решил тут не мудрить ничего, а прото в файл изначально записать количество строк в ListBox1, а потом считать их оттуда и циклом for добавить во время чтения из файла.
|