Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 129, средняя оценка - 4.66
Sasha
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 3
#1

List index out of bounds (0) - C++ Builder

09.02.2009, 14:54. Просмотров 15799. Ответов 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 (0) (C++ Builder):

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*...

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

4
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 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
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 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(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=...

Ошибка в чате - List index out of bounds
Пишу простой чат, всё работает правильно, но тем не менее, при каждом вызове...

EListError with message 'List index out of bounds(37)'
Доброго времени суток уважаемые...не так давно стал осваивать С++ на основе...


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

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

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