Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.043 c
3-1178986882
olevacho_
2007-05-12 20:21
2007.09.09
Узнать дату на сервере


4-1174135918
MegaVolt
2007-03-17 15:51
2007.09.09
Пропуски данных при приёме по Com порту компонент CPort


2-1187050129
delphino
2007-08-14 04:08
2007.09.09
Нажатие Enter


3-1179291107
-=Domix=-
2007-05-16 08:51
2007.09.09
значение генератора


4-1174460041
Asker
2007-03-21 09:54
2007.09.09
Программный скроллинг у TTreeView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский