Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.04.26;
Скачать: CL | DM;

Вниз

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

 
AIK ©   (2009-03-10 08:48) [0]

Здравствуйте Уважаемые.
Не могу понять принцип ошибки «обращения к запрещенной памяти» в данном случае:

procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
 Selected: Boolean);
var
 Nom: String;
begin
BEGIN
 nom:= ListView1.Items[ListView1.ItemIndex].Caption;

 If nom="0" then
     Button1.Enabled:= true else
     Button1.Enabled:= false;
END;
end;


Код я уже подправил:

...
If ListView1.SelCount > 0 then
BEGIN

 nom:= ListView1.Items[ListView1.ItemIndex].Caption;
...


Но почему первый вариант выдает ошибку? Ведь итемы ListView’a уже заранее созданы да и ошибка вылетает только со второго клика.


 
Palladin ©   (2009-03-10 08:51) [1]

Какого фига ты лезешь в ItemIndex? нужный пункт тебе в параметрах передается. И если он был выделен то selected=true, если с него только что сняли отметку о выделении то selected=false


 
AIK ©   (2009-03-10 09:07) [2]


> нужный пункт тебе в параметрах передается


Так в ItemIndex он и передается


 
AIK ©   (2009-03-10 09:11) [3]

Может я тебя неправильно понял но вариант:
...
nom:= ListView1.Selected.Caption;
...
тоже самое.


 
Palladin ©   (2009-03-10 09:13) [4]


> Так в ItemIndex он и передается

да что ты говоришь, это тебе приснилось сегодня? или откуда ты это узнал? убеждения?


> AIK ©   (10.03.09 09:11) [3]

я с тебя фигею. ты на параметры события вообще смотрел хоть раз в жизни? Item это что по твоему?


 
brother ©   (2009-03-10 09:21) [5]

> procedure TForm1.ListView1SelectItem(Sender: TObject; Item:
> TListItem;

> Selected: Boolean);

это про [1]


 
korneley ©   (2009-03-10 09:22) [6]


> AIK ©   (10.03.09 09:07) [2]
> > нужный пункт тебе в параметрах передаетсяТак в ItemIndex
> он и передается

Ага, только сначала в ИтемИндекс -1 приходит, на которое ты никаких проверок не поставил.

>  If nom="0" then      Button1.Enabled:= true else      Button1.
> Enabled:= false;

А чего не Button1.Enabled := nom = "0";?


 
Palladin ©   (2009-03-10 09:25) [7]


> korneley ©   (10.03.09 09:22) [6]

не только сначала, но и при уведомлении о снятии выделения


 
AIK ©   (2009-03-10 09:26) [8]


> > Так в ItemIndex он и передаетсяда что ты говоришь, это
> тебе приснилось сегодня? или откуда ты это узнал? убеждения?
>


Да я ступил :о)


>  Item это что по твоему?

Это поле.


 
korneley ©   (2009-03-10 09:29) [9]


> Palladin ©   (10.03.09 09:25) [7]

Дык, понятно... Ну хочет человек через... ItemIndex делать, пусть. Его проблемы. Но проверить-то индекс на валидность надо :)


 
Сергей М. ©   (2009-03-10 09:30) [10]


> AIK ©   (10.03.09 09:26) [8]


> Это поле


"Поле" по-непорусски - это "Field".
Где в объявлении формального параметра Item ты видишь слово "Field" ?


 
Palladin ©   (2009-03-10 09:33) [11]


> korneley ©   (10.03.09 09:29) [9]

боюсь тебя разочаровать, но ItemIndex отнюдь не тот элемент который был выделен


 
AIK ©   (2009-03-10 09:38) [12]


> А чего не Button1.Enabled := nom = "0";?


Да хоть  Button1.caption:="абвгд";

Меня интересовала суть ошибки
Может я опять туплю но вот я выбираю одно из полей ListView1 Item"у присваивается соответствующий номер поля и я вытаскиваю Caption из этого поля  ListView1.Items[ListView1.ItemIndex].Caption ( пусть даже если  ListView1.Selected.Caption, а тут вылетает ошибка типа обращаюсь туда где ничего нет, всеголиш хотелось понять почему?


 
korneley ©   (2009-03-10 09:39) [13]


> Palladin ©   (10.03.09 09:33) [11]
>боюсь тебя разочаровать, но ItemIndex отнюдь не тот элемент
> который был выделен

Не, не разочаруешь. Я же не спорю. ;) Я по поводу откуда у автора AV нарисовалось :))) А уж то он там анализирует, не то, ему уже в [1] показали.
 Да, автор, в [3] Selected запросто nil может оказаться. Будет AV номер два.


 
AIK ©   (2009-03-10 09:40) [14]


> ... ( пусть даже если  ListView1.Selected.Caption)...


:)


 
Palladin ©   (2009-03-10 09:46) [15]


> вот я выбираю одно из полей ListView1 Item"у присваивается
> соответствующий номер поля

фантазии фантазии... они редко пересекаются с реальностю... Item"у ничего не присваивается, Item и есть тот Item который реально существует.... кажется я тебе доходчиво еще в [1] обяснил, что означает параметр selected... думани логически, что произойдет если selected будет false ?


> Может я опять туплю

"Может" - лишнее


 
AIK ©   (2009-03-10 09:53) [16]


> Palladin ©   (10.03.09 09:46) [15]


Нутоесть типа создал несколько полей и у каждого свой итем чтоли?


 
Palladin ©   (2009-03-10 09:56) [17]

я в шоке от тебя :) коллекция TListView.Items[]:TListItem - это что? фикция? так вот на событие TListView.OnSelectItem передается объект Item:TListItem из этой коллекции... неужели это так трудно понять?


 
Palladin ©   (2009-03-10 10:07) [18]

Хм, а ты вообще о каких таких полях говоришь?


 
AIK ©   (2009-03-10 10:28) [19]


> Хм, а ты вообще о каких таких полях говоришь?


Строчки в у ListView"а


 
Palladin ©   (2009-03-10 10:29) [20]

В этом случае все вышесказаное мной справедливо.


 
AIK ©   (2009-03-10 10:42) [21]


> Palladin ©   (10.03.09 10:29) [20]
> В этом случае все вышесказаное мной справедливо.


Полностью с вами согласен, а можно спросить почему в данном случаи вылетает ошибка?


 
Palladin ©   (2009-03-10 10:57) [22]

Объясняю на пальцах, еще раз. Событие OnItemSelect, как видно из справки, возбуждается в случае выделении элемента, а так же и при снятии отметки о выделении, что же произошло, нам рассказывает параметр Selected, если отметка была снята, как по твоему, в какие места будет указывать ListView1.Selected ? Правильно, туда где не светит солнце.


 
AIK ©   (2009-03-10 11:15) [23]


> Palladin ©   (10.03.09 10:57) [22]


Ууу... теперь понял. Спасибо



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

Текущий архив: 2009.04.26;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.014 c
15-1235651214
Ega23
2009-02-26 15:26
2009.04.26
Подскажите, как понять


2-1236857943
Руслан
2009-03-12 14:39
2009.04.26
что за ошибка в Turbo Delphi 2006 Explorer


15-1235112680
Jeer
2009-02-20 09:51
2009.04.26
С праздником, мужики !


6-1202570010
Kerk
2008-02-09 18:13
2009.04.26
Connection Timeout у TTCPClient


15-1235569007
Naturlih
2009-02-25 16:36
2009.04.26
TTimeVal