Форум: "Начинающим";
Текущий архив: 2013.09.22;
Скачать: [xml.tar.bz2];
Вниздобавление в ComboBox Найти похожие ветки
← →
AstonMartin (2013-01-10 12:03) [0]Почему кидает ошибку - 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;
← →
AstonMartin (2013-01-10 12:06) [1]такой прикол почему-то только когда добавляю -1, с -2, например, все нормально
← →
KilkennyCat © (2013-01-10 12:30) [2]Какой смысл в выше приведенной процедуре?
Только не ври, что сократил свой громадный код до того огрызка с проблемой, ибо вышеприведенная процедура работает.
← →
Медвежонок Пятачок © (2013-01-10 12:48) [3]Это так и должно быть когда приводят минус один к TObject
← →
AstonMartin (2013-01-10 13:04) [4]
> Какой смысл в выше приведенной процедуре?
> Только не ври, что сократил свой громадный код до того огрызка
> с проблемой, ибо вышеприведенная процедура работает.
Это тестовый пример. Смысл в том, чтобы понять, почему нельзя передавать в Object значение -1. В D7 не работает. В ComboBox.Items.Objects у меня должны храниться индексы на item"ы другого TStringList"а или значение -1.
← →
RWolf © (2013-01-10 13:27) [5]
> почему нельзя передавать в 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;
← →
Внук © (2013-01-10 17:47) [6]>> Смысл в том, чтобы понять, почему нельзя передавать в Object значение -1
Не всегда. В некоторые контролы можно. Но тут нельзя. Нужно просто принять это как данность :)
← →
KilkennyCat © (2013-01-11 02:50) [7]В XE2 не вызовет List index out of bounds.
← →
O'ShinW © (2013-01-11 08:59) [8]наверное тут
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, но вызывающий думает, что не нашлось ничего
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.09.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.002 c