Форум по Delphi программированию



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.08.2022, 16:55
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию Снова ListView

Подскажите как правильнее избежать access violation at address при использовании ListView. Если кликнуть по заполненной строке, то проблем нет, а вот если по чистому полю, то естественно получаю ошибку. Понятно что идет обращение к отсутствующему объекту потому и ошибка. Как проще, а главное правильно, этот момент обойти? Заранее благодарю за помощь.
Ответить с цитированием
  #2  
Старый 02.08.2022, 17:40
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,801
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Надо смотреть твой код, косяк явно у тебя в коде, бо как за всю историю использования ListView ни разу не встречался с подобным поведением. Все разы, когда была какая-то проблема, она была связана с ошибками в моем коде.
Например, при клике ты делаешь какие-либо проверки выделенного Item'а через обращение к Selected. Однако, при клике по пустому месту, выделение сбрасывается и св-во Selected страновится равно Nil. Если ты не проверяешь это, то тут же и получаешь Access Violation. При этом ошибка может выскакивать в совершенно другос обработчике, напримре, в обработчике обновления статуса TAction'ов.
Это просто пример. Как я сказал, надо анализировать весь код на подобные ошибки...
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
fofka (03.08.2022)
  #3  
Старый 03.08.2022, 11:46
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию Сам виноват в ошибке.

Цитата:
Сообщение от lmikle
Надо смотреть твой код, косяк явно у тебя в коде, бо как за всю историю использования ListView ни разу не встречался с подобным поведением. Все разы, когда была какая-то проблема, она была связана с ошибками в моем коде.
Например, при клике ты делаешь какие-либо проверки выделенного Item'а через обращение к Selected. Однако, при клике по пустому месту, выделение сбрасывается и св-во Selected страновится равно Nil. Если ты не проверяешь это, то тут же и получаешь Access Violation. При этом ошибка может выскакивать в совершенно другос обработчике, напримре, в обработчике обновления статуса TAction'ов.
Это просто пример. Как я сказал, надо анализировать весь код на подобные ошибки...

В который раз наступаю на одни и те же грабли. Уперся в свои задачи, не выполнил проверку. Всего и нужно было вставить пару строчек
Код:
 If ListView1.Selected=nil
  then                        
   Exit; 
Все просто:
1. Выполни обязательные условия.
2. Лепи свой код.
3. НЕ СПЕШИ.


Большое спасибо lmikle. Указали на мою ошибку.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:50.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter   Ссылка на Telegram