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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.01.2011, 10:57
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию удаление определенных строк из лист бокса

Сначало попробовал так, но была ошибка так как число строк менялось после удаления а изначально же записано было больше
Код:
for mem1:=0 to listbox1.Count-1 do begin
if DaysBetween(TDateTime(Now()),StrToDate(copy(listbox1.Items[mem1],pos('=',listbox1.Items[mem1])+1,length(listbox1.Items[mem1])))) > 1  then
      begin
         listbox1.Items.Delete(mem1);
     end;
   end;
затем исправил на это
но так он вобще ничего не делает потяния не имею почему
Код:
for mem1:=listbox1.Count-1 to 0 do begin
if DaysBetween(TDateTime(Now()),StrToDate(copy(listbox1.Items[mem1],pos('=',listbox1.Items[mem1])+1,length(listbox1.Items[mem1])))) > 1  then
      begin
         listbox1.Items.Delete(mem1);
     end;
   end;
Ответить с цитированием
  #2  
Старый 16.01.2011, 12:01
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

в принципе если первый вариант находил и удалл значит во втором не так ищю?
Ответить с цитированием
  #3  
Старый 16.01.2011, 12:35
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Код:
for mem1:=listbox1.Count-1 to 0 do begin
Как он будет искать, если цикл состоит из 0 раз ?

Цитата:
Сначало попробовал так, но была ошибка так как число строк менялось после удаления а изначально же записано было больше
А тут совсем не понял вопрос, можно поподробней?

З.Ы. И mem1 надо по моему увеличивать в цикле Inc(mem1) или mem1:=mem1+1;
Ответить с цитированием
  #4  
Старый 16.01.2011, 12:39
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

делай так:
Код:
mem1:=0;
while mem1<=ListBox1.Items.Count do
begin
if DaysBetween(TDateTime(Now()), StrToDate(copy(listbox1.Items[mem1], pos('=',listbox1.Items[mem1])+1,length(listbox1.Items[mem1])))) > 1  then
      begin
         listbox1.Items.Delete(mem1);
         dec(mem1);
     end;
inc(mem1);
end;
или же второй вариант c DownTo вместо To
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 16.01.2011, 13:26
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

DownTo вместо To сделал, спасибо
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter