![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TCheckListBox [D7, XP]
Alex8 © (2007-08-15 16:10:00)Уважаемые мастера !
Вот такая получается фокус :
(Здесь lbOr - TCheckListBox.)
procedure TfrmVib.lbOrClick(Sender: TObject);
Var i: Word;
r1: String;
begin
i := lbOr.ItemIndex;
r1 := lbOr.Items[lbOr.ItemIndex]; // r1='a'
r1:= lbOr.Items[i]; // r1='a'
r1:= lbOr.Items[i]; // r1='a'
r1:= lbOr.Items[i]; // r1='a'
r1:= lbOr.Items[i]; // r1=''
end;
И как бы я не варьировал (один оператор r1:=..; несколько одинаковых)
все результаты верные, а последний дает r1=''.
В чем дело? Подскажите. Спасибо
Alien1769 (2007-08-15 19:47:00) [1]
> Прошу прощения, но я не понял,
> чем отличаются lbOr.Items[0] и lbOr.Items[ last]
тебе уже Германн сказал, что
> Но на данную переменную ссылок больше нигде нет.
Германн (2007-08-15 19:19:00) [2]
> > Watches показывает белиберду.
> Практика показывает, что это так.
> Но не логично.
> После последней строчки я еще не вышел
> из процедуры. Очередной выполняемый оператор "End".
>
Да из процедуры еще не вышел. Но на данную переменную ссылок больше нигде нет.
Alex8 (2007-08-15 19:14:00) [3]> Watches показывает белиберду.
Практика показывает, что это так.
Но не логично.
После последней строчки я еще не вышел
из процедуры. Очередной выполняемый оператор "End".
На него указывает стрелка.
Значит попал на "End", значит вышел из процедуры. Так ?
Наверное, так. Спасибо.
Германн (2007-08-15 18:52:00) [4]
> А я смотрел в пошаговом режиме в тексте
> процедуры и в окне Watches.
> Так в чем я был не прав ?
>
После последней строчки r1:= lbOr.Items[i]; // r1='' смысл локальной переменной r1 терятся полностью. Поэтому Watches показывает белиберду.
Alex8 (2007-08-15 18:39:00) [5]>Что покажет ShowMessage?
Проверил.
ShowMessage показал все правильно.
А я смотрел в пошаговом режиме в тексте
процедуры и в окне Watches.
Так в чем я был не прав ?
Германн (2007-08-15 17:55:00) [6]А если сделать так:
procedure TfrmVib.lbOrClick(Sender: TObject);
Var i: Word;
r1: String;
begin
i := lbOr.ItemIndex;
r1 := lbOr.Items[lbOr.ItemIndex]; // r1='a'
r1:= lbOr.Items[i]; // r1='a'
r1:= lbOr.Items[i]; // r1='a'
r1:= lbOr.Items[i]; // r1='a'
r1:= lbOr.Items[i]; // r1=''
ShowMessage(r1);
end;
Что покажет ShowMessage?
Alex8 (2007-08-15 17:48:00) [7]Прошу прощения, но я не понял,
чем отличаются lbOr.Items[0] и lbOr.Items[last]
от остальных строк. То есть не пойму, о чем помнить.
Кстати, в приведенном мной примере все происходило
именно при i=0.
Alien1769 (2007-08-15 17:21:00) [8]не забывай про lbOr.Items[ 0] и про lbOr.Items[ last]