Вниз
Скачать: CL | DM;

TCheckListBox   Найти похожие ветки 

 
Alex8   (2007-08-15 16:10) [0]

Уважаемые мастера !
Вот такая получается фокус :
(Здесь 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 17:21) [1]

не забывай про lbOr.Items[0] и про lbOr.Items[last]


 
Alex8   (2007-08-15 17:48) [2]

Прошу прощения, но я не понял,
чем отличаются  lbOr.Items[0] и lbOr.Items[last]
от остальных строк. То есть не пойму, о чем помнить.

Кстати, в приведенном мной примере все происходило
именно при i=0.


 
Германн ©   (2007-08-15 17:55) [3]

А если сделать так:
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 18:39) [4]

>Что покажет ShowMessage?
Проверил.
ShowMessage показал все правильно.
А я смотрел в пошаговом режиме в тексте
процедуры и в окне Watches.
 Так в чем я был не прав ?


 
Германн ©   (2007-08-15 18:52) [5]


> А я смотрел в пошаговом режиме в тексте
> процедуры и в окне Watches.
>  Так в чем я был не прав ?
>

После последней строчки r1:= lbOr.Items[i];     // r1="" смысл локальной переменной r1 терятся полностью. Поэтому Watches показывает белиберду.


 
Alex8   (2007-08-15 19:14) [6]

> Watches показывает белиберду.
  Практика показывает, что это так.
Но не логично.
 После последней строчки я еще не вышел
из процедуры. Очередной выполняемый оператор "End".
На него указывает стрелка.
 Значит попал на "End", значит вышел из процедуры. Так ?
Наверное, так. Спасибо.


 
Германн ©   (2007-08-15 19:19) [7]


> > Watches показывает белиберду.
>   Практика показывает, что это так.
> Но не логично.
>  После последней строчки я еще не вышел
> из процедуры. Очередной выполняемый оператор "End".
>

Да из процедуры еще не вышел. Но на данную переменную ссылок больше нигде нет.


 
Alien1769 ©   (2007-08-15 19:47) [8]


> Прошу прощения, но я не понял,
> чем отличаются  lbOr.Items[0] и lbOr.Items[last]


тебе уже Германн сказал, что

>  Но на данную переменную ссылок больше нигде нет.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.014 c
2-1187081956
newcounter
2007-08-14 12:59
2007.09.09
WideString из массива.


15-1187166270
Fin
2007-08-15 12:24
2007.09.09
Delphi 5 под vista


15-1186987362
WondeRu at work
2007-08-13 10:42
2007.09.09
Поверхность из стерео-изображений


2-1187530707
AlRal
2007-08-19 17:38
2007.09.09
Array of TStrings


15-1186614254
Германн
2007-08-09 03:04
2007.09.09
Америка - страна адвокатов!




   Наверх