Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/88: Рейтинг темы: голосов - 88, средняя оценка - 4.55
Sasha
4923 / 2387 / 530
Регистрация: 05.06.2008
Сообщений: 7,477
Записей в блоге: 3
1

List index out of bounds (0)

09.02.2009, 14:54. Просмотров 15819. Ответов 4
Метки нет (Все метки)

У меня 2 вопроса...

1. Пишу программку для добавления в листбокс строк из эдит. Есть 2 кнопки: одна добавляет строки, другая удаляет их. Также придусмотрел появление горизонтальной прокрутки в листбоксе. Но есть одна проблема появляется окно с ошибкой после запуска программы, когда я добавляю первую строку в листбокс. Вот эта ошибка "List index out of bounds (0)". Подскажите в чём проблема??????


//---------------------------------------------------------------------------
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int MaxWidth=10000,WidthOfString,b,i;
AnsiString str;
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
i = ListBox1->ItemIndex;
str = ListBox1->Items->Strings[i];
WidthOfString = ListBox1->Canvas->TextWidth(str);
b = ListBox1->ClientWidth;
 
        if (!(Edit1->Text == ""))
             {ListBox1->Items->Add(Edit1->Text);
               Edit1->Text = "";
               BitBtn1->Enabled=true;
               ShowMessage(WidthOfString);
             if (WidthOfString >= b)
                {ListBox1->Perform(LB_SETHORIZONTALEXTENT,MaxWidth,0);}}
                
 
 
Edit1->SetFocus();
Button2->Enabled=true;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 
i = ListBox1->ItemIndex;
str = ListBox1->Items->Strings[i];
WidthOfString = ListBox1->Canvas->TextWidth(str);
b = ListBox1->ClientWidth;
 
 
      if (ListBox1->Items->Count > 0)
         {
        if (!(ListBox1->ItemIndex == -1))
             {Button2->Enabled=true;
              ListBox1->Items->Delete(ListBox1->ItemIndex);
              Edit1->SetFocus();
            if (WidthOfString < b)
               {ListBox1->Perform(LB_SETHORIZONTALEXTENT,0,0);}
               else if (ListBox1->Items->Count == 0)
                    {ListBox1->Perform(LB_SETHORIZONTALEXTENT,0,0);
                     Button2->Enabled=false;
                     BitBtn1->Enabled=false;}}} 
 
}
//---------------------------------------------------------------------------





И 2 вопрос..

Подскажите как реализовать поиск файлов в каталоге с рассширением *.ttf и как из этих файлов извлеч названия шрифтов и поместить в листбокс. Или хотябы намикните в каком направлении двигаться........


Заранее благодарен за оба ответа....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2009, 14:54
Ответы с готовыми решениями:

List index out of bounds (-1)
Доброго дня всем! Помогите пожалуйста. При попытке запустить приложение в...

list index out of bounds (6)
хочу изменить даные с БД и он выкидывает ошибку list index out of bounds(6)...

List index out of bounds (0)
Добро всем! Вот такой massage перед запуском программы мне выдает на XP и...

List index out of bounds(38)
Доброго времени суток. Возможно, вопрос поднимался уже, но конкретно для своей...

list index out of bounds
Здрасте возникла проблема. void ListFiles(AnsiString path, TStrings*...

4
Vourhey
Почетный модератор
6492 / 2267 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
09.02.2009, 15:12 2
проверь здесь, какой у тебя i:
C++
1
2
i = ListBox1->ItemIndex;  
str = ListBox1->Items->Strings[i];
Когда у тебя листбокс пустой, ты какую строку из него достать собираешься?
0
AsFalt
20 / 19 / 2
Регистрация: 27.06.2008
Сообщений: 105
09.02.2009, 15:29 3
Когда у тебя Листбокс пуст он не может корректно прочитать ширину элемента содержащегося в нем...

вот так будет работать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int MaxWidth=10000,WidthOfString,b,i;
AnsiString str;
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
i = ListBox1->ItemIndex;
if (ListBox1->Items->GetText() == "")
{
        str = ListBox1->Items->Strings[i];
        WidthOfString = ListBox1->Canvas->TextWidth(str);
}
else
{
        WidthOfString = 0;
}
b = ListBox1->ClientWidth;
 
 
      if (ListBox1->Items->Count > 0)
         {
        if (!(ListBox1->ItemIndex == -1))
             {Button2->Enabled=true;
              ListBox1->Items->Delete(ListBox1->ItemIndex);
              Edit1->SetFocus();
            if (WidthOfString < b)
               {ListBox1->Perform(LB_SETHORIZONTALEXTENT,0,0);}
               else if (ListBox1->Items->Count == 0)
                    {ListBox1->Perform(LB_SETHORIZONTALEXTENT,0,0);
                     Button2->Enabled=false;
                     BitBtn1->Enabled=false;}}}
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
i = ListBox1->ItemIndex;
if (ListBox1->Items->GetText() == "")
{
        str = ListBox1->Items->Strings[i];
        WidthOfString = ListBox1->Canvas->TextWidth(str);
}
else
{
        WidthOfString = 0;
}
b = ListBox1->ClientWidth;
 
        if (!(Edit1->Text == ""))
             {ListBox1->Items->Add(Edit1->Text);
               Edit1->Text = "";
               BitBtn1->Enabled=true;
               ShowMessage(WidthOfString);
             if (WidthOfString >= b)
                {ListBox1->Perform(LB_SETHORIZONTALEXTENT,MaxWidth,0);}}
 
 
 
Edit1->SetFocus();
Button2->Enabled=true;
}
//---------------------------------------------------------------------------
0
Sasha
4923 / 2387 / 530
Регистрация: 05.06.2008
Сообщений: 7,477
Записей в блоге: 3
09.02.2009, 15:35  [ТС] 4
Спасибо попробую, ну а по второму вопросу что-то можете посоветовать?
0
AntonChik
1085 / 583 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
10.02.2009, 10:26 5
TFileListBox с маской (Мask) *.ttf
+ посмотри пример в шестом Билдере ...Examples\Apps\Owner List\fontdraw.bpr
а вообще еще существует TFontDialog
0
10.02.2009, 10:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2009, 10:26

List index out of bounds 0
Добрый день! Пытаюсь проработать пример передачи файла через клиент-сервер и...

Ошибка List index out of bounds(2)
В чем ошибка? void __fastcall TForm2::Button2Click(TObject *Sender) { if...

Ошибка list index out of bounds
for (int i=0; i&lt;Memo2-&gt;Lines-&gt;Count;i++) { ValueListEditor2-&gt;Cells=...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru