Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 129, средняя оценка - 4.66
Sasha
4914 / 2379 / 248
Регистрация: 05.06.2008
Сообщений: 7,457
Записей в блоге: 3
#1

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

09.02.2009, 14:54. Просмотров 15774. Ответов 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 - C++ Builder
Здрасте возникла проблема. void ListFiles(AnsiString path, TStrings* List, TStrings* List2, long int strn) { TSearchRec sr; ...

List index out of bounds (0) - C++ Builder
Добро всем! Вот такой massage перед запуском программы мне выдает на XP и только на одном ПК, причем windows XP ставился с одного диска...

list index out of bounds (6) - C++ Builder
хочу изменить даные с БД и он выкидывает ошибку list index out of bounds(6) подскажите как с этим бороться.. :)

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

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

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

4
Vourhey
Почетный модератор
6489 / 2263 / 123
Регистрация: 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 / 1
Регистрация: 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
4914 / 2379 / 248
Регистрация: 05.06.2008
Сообщений: 7,457
Записей в блоге: 3
09.02.2009, 15:35  [ТС] #4
Спасибо попробую, ну а по второму вопросу что-то можете посоветовать?
0
AntonChik
1084 / 582 / 21
Регистрация: 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) - C++ Builder
В чем ошибка? void __fastcall TForm2::Button2Click(TObject *Sender) { if (flag) { ...

Ошибка в чате - List index out of bounds - C++ Builder
Пишу простой чат, всё работает правильно, но тем не менее, при каждом вызове процедур (опишу их ниже), выбрасывается ошибка &quot;List inex out...

EListError with message 'List index out of bounds(37)' - C++ Builder
Доброго времени суток уважаемые...не так давно стал осваивать С++ на основе компилятора RAD Studio 2010... при работе одной из функций...

list index out of bounds (0) ошибка EStringList - C++ Builder
Всем привет! У меня возникла проблема :( Раньше программа работала без проблем но сейчас почемуто выдает такую ошибку: class...


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

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

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