![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Есть 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] пуст.
Сверяй с коунтом. |
|
#3
|
|||
|
|||
|
Так по-моему, ListBox1.Items[i] должен считаться с самого файла
|
|
#4
|
||||
|
||||
|
Вот смотри, ты сначала чистишь списки, у тебя у них Count == 0, далее ты делаешь Add, по дефолту передаешь значение из ListBox1.Items[i], т.к. список пуст, ты получаешь исключение. Внимательнее на код смотрим.
|
|
#5
|
|||
|
|||
|
Тогда такой вопрос - как получить именно то значение, которое записано в файл?
|
|
#6
|
||||
|
||||
|
Код:
F.ReadString('Track',Inttostr(i), EmptyStr) |
|
#7
|
|||
|
|||
|
Спасибо за ответы.
Попробовал emptyStr добавить, из файла прочиталась первая строка и вылезла ошибка I/O error 6 |
|
#8
|
||||
|
||||
|
Until(EOF) ;
Ай-яй-яй!!! Притянуто за уши, да не то. Вообще, я бы сначала записывал бы Count (сколько всего файлов), а потом в форе шел бы по секциям F.ReadString('file' + inttostr(i), ... Последний раз редактировалось M.A.D.M.A.N., 09.04.2011 в 20:23. |
|
#9
|
|||
|
|||
|
Да, я решил тут не мудрить ничего, а прото в файл изначально записать количество строк в ListBox1, а потом считать их оттуда и циклом for добавить во время чтения из файла.
|