![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]()
удаление дубликатов в ListView
Всем здрасти. Помогите разобраться почему такое происходит вот код удаления дублей строк в ListView Код:
удаляется строка ListView1.Items.Count-1 стал равен 14 однако i осталось равна 15 и соответственно ошибка т.к. обратились к несюществующей строке. сделал так Код:
фактически ListView1.Items.Count=5 а i=14 вот почему так????!!!?? этот же алгоритм в memo работает на ура. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]()
кто нить...
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]() Код:
А ЧТО - КОД ОБРАМИТЬ ТЕГАМИ, КАК ТОГО ТРЕБУЮТ ПРАВИЛА - СЛИШКОМ СЛОЖНО?!! ИЛИ ДОЛГО?!! ИЛИ НЕ ЦАРСКОЕ ЭТО ДЕЛО - КОД ПО ПРАВИЛАМ ОФОРМЛЯТЬ?! :-[ Модератор. Извините... Последний раз редактировалось ReportCube; 11.05.2011 в 17:41. Причина: Извинения |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]()
через while понятно что можно (наверное так и сделаю)
но все же очень интересно почему i в счетчике так себя странно ведет |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 27.09.2010
Сообщений: 376
|
![]() |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]() |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]()
Вначале инициализируется цикл for i :=. Во втором Вашем цикле значение i не изменяется и не должно изменяться. И чего же Вы хотите...
|
![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]()
ReportCube внимательно читаем
Цитата:
for j:=i-1 downto 0 do количество строк уменьшилось с 15 до 4. Цикл for j:=i-1 downto 0 do закончил обработку и программа перешла к циклу for i:=ListView1.Items.Count-1 downto 1 do begin на данный момент ListView1.Items.Count-1 равен 4, по идее на следующем шаге в переменную str должна попасть строка с индексом 4, но этого не происходит т.к. i остается быть равной 15. Так о какой нах инициализации вы говорите? |
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]()
Ещё раз: инициализация счётчика в цикле For происходит при его старте!!! Далее счётчик, по умолчанию, изменяется на единицу. Ему абсолютно безразлично изменения ListView1.Items.Count, как бы Вы о нём не думали.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление дубликатов | Deltist | Microsoft Office Excel | 11 | 14.01.2011 16:01 |
удаление текста из listview | bulldog5293 | Общие вопросы Delphi | 1 | 13.08.2010 08:56 |
поиск дубликатов файлов(имя, тип, размер). Вывод дубликатов на экран с отображением их пути | faraon1792 | Помощь студентам | 4 | 19.03.2010 23:46 |
Удаление Items в ListView | BioHEX | Общие вопросы Delphi | 1 | 04.01.2010 19:43 |
удаление дубликатов и группировка строк | Serglen | Microsoft Office Excel | 2 | 30.07.2008 15:51 |