![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Проблема такова: при запуске программы она проверяет находятся ли файлы в определенной папке и добавляет их имена в ЛистБокс:
Код:
ListBox1.Clear; if FindFirst(Dir+'*.ini',faAnyFile,SearchRec)=0 then begin ListBox1.Items.Add(SearchRec.Name); while (FindNext(SearchRec)=0) do ListBox1.Items.Add(SearchRec.Name); end; ListBox1.ItemIndex:=0 Затем при нажатии на кнопку от которой требуется загрузить и отобразить выбранный файлпоявляется ошибка Project1.dsk.exe raised exception class EStringListError with message `List index out if bounds (0)`. Process stopped. Use Step or Run to continue. Подскажите в чем может быть причина |
#2
|
||||
|
||||
![]() На какую строчку ругается-то? Код кнопки выложи, мы не экстрасенсы.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
|||
|
|||
![]() Проблема в том, что он не ругается на какую-то определенную строку, он выделяет строку end. в закладке проэкта
текст кнопки Код:
procedure TForm1.Button1Click(Sender: TObject); begin if not DirectoryExists(Dir+ComboBox1.Items[ComboBox1.ItemIndex]) then createdir(Dir+ComboBox1.Items[ComboBox1.ItemIndex]); Result:=TiniFile.Create(Dir+ComboBox1.Items[ComboBox1.ItemIndex]+'\'+LabeledEdit1.Text+LabeledEdit2.Text[1]+'.ini'); file:=TIniFile.Create(Dir+Form1.ListBox1.Items[Form1.ListBox1.ItemIndex]); Panel1.Visible:=TRUE; end; |
#4
|
|||
|
|||
![]() Цитата:
Код, который Вы привели - крайне не стабилен. Глюки у Вас могут быть практичеки в каждой строке. Например : Что будет, если ComboBox1.ItemIndex<0 в ЭТОЙ строке ??? Код:
if not DirectoryExists(Dir+ComboBox1.Items[ComboBox1.ItemIndex]) then createdir(Dir+ComboBox1.Items[ComboBox1.ItemIndex]); Участок кода, начиная с этой строки, надо защищать конструкцией TRY ... FINALLY ... END : Код:
Result:=TiniFile.Create(Dir+ComboBox1.Items[ComboBox1.ItemIndex]+'\'+LabeledEdit1.Text+LabeledEdit2.Text[1]+'.ini'); Здесь Вы использовали зарезервированное слово <file> Код:
file:=TIniFile.Create(Dir+Form1.ListBox1.Items[Form1.ListBox1.ItemIndex]); А где освобождение ресурсов <Free> (после TiniFile.Create) ??? Вам нужно переосмыслить Ваш код и переписать его. Тогда будет ясно - в чем глюки ... |
#5
|
|||
|
|||
![]() Цитата:
Лучше так : Код:
... if ListBox1.Items.Count>0 then ListBox1.ItemIndex:=0; |
#6
|
|||
|
|||
![]() не помогло пишет тоже самое
![]() |