Вниз
Скачать: 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.022 c
2-1186412147
Melior
2007-08-06 18:55
2007.09.09
Работа с TCP/UDP и БД


2-1186922035
***mikle***
2007-08-12 16:33
2007.09.09
Обращение через указатель


2-1187255588
vitv
2007-08-16 13:13
2007.09.09
RxSysTray-проблема


15-1186851551
Sagot
2007-08-11 20:59
2007.09.09
Не обрабатываются события TWebBrowser в ie7


15-1186513465
Cyrax
2007-08-07 23:04
2007.09.09
Проверка авторских прав на слово, составляющее доменное имя...




   Наверх