Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

добавление в ComboBox


AstonMartin ©   (2013-01-10 12:03:00) 

Почему кидает ошибку - List index out of bounds (0)?

procedure TForm1.Button1Click(Sender: TObject);
begin
 ComboBox1.Items.AddObject('', TObject(-1));
 ShowMessage(IntToStr(Integer(ComboBox1.Items.Objects[0])));
end;


O'ShinW   (2013-01-11 08:59:00) [1]

наверное тут

function TStrings.IndexOfObject(AObject: TObject): Integer;
begin
 for Result := 0 to GetCount - 1 do
   if GetObject(Result) = AObject then Exit;
 Result := -1;
end;

т.е. если не находит ничего, то -1
у нас находит именно -1, но вызывающий думает, что не нашлось ничего


KilkennyCat   (2013-01-11 02:50:00) [2]

В XE2 не вызовет List index out of bounds.


Внук   (2013-01-10 17:47:00) [3]

>> Смысл в том, чтобы понять, почему нельзя передавать в Object значение -1
 Не всегда. В некоторые контролы можно. Но тут нельзя. Нужно просто принять это как данность :)


RWolf   (2013-01-10 13:27:00) [4]


> почему нельзя передавать в Object значение -1.

потому что значение -1 зарезервировано под ошибку.


function TCustomComboBoxStrings.GetObject(Index: Integer): TObject;
begin
 Result := TObject(SendMessage(ComboBox.Handle, CB_GETITEMDATA, Index, 0));
 if Longint(Result) = CB_ERR then
   Error(SListIndexError, Index);
end;


AstonMartin   (2013-01-10 13:04:00) [5]


> Какой смысл в выше приведенной процедуре?
> Только не ври, что сократил свой громадный код до того огрызка
> с проблемой, ибо вышеприведенная процедура работает.


Это тестовый пример. Смысл в том, чтобы понять, почему нельзя передавать в Object значение -1. В D7 не работает. В ComboBox.Items.Objects у меня должны храниться индексы на item'ы другого TStringList'а или значение -1.


Медвежонок Пятачок   (2013-01-10 12:48:00) [6]

Это так и должно быть когда приводят минус один к TObject


KilkennyCat   (2013-01-10 12:30:00) [7]

Какой смысл в выше приведенной процедуре?
Только не ври, что сократил свой громадный код до того огрызка с проблемой, ибо вышеприведенная процедура работает.


AstonMartin   (2013-01-10 12:06:00) [8]

такой прикол почему-то только когда добавляю -1, с -2, например, все нормально


Наверх

Титульная страница Поиск, карта сайта Написать письмо