Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление записей в StrinList. [D6, 2000]


pathfinder ©   (2005-11-08 12:43:00) 

Подскажите пожалуйста как удалить из StringList-а пустые строки?


Digitman   (2005-11-08 14:11:00) [1]


> Я говорил про плюс по сравнению с while. Вообще-то


ну эт другой коленкор)


begin...end   (2005-11-08 14:08:00) [2]

> umbra

Да, я тоже else не заметил :-)
Сорри.

> Digitman ©   (08.11.05 14:05) [7]

> в соответствии со спецификацией Паскаля граничные значения
> переменной for-цикла вычисляются один раз при исполнении
> for-оператора вне зависимости от to или downto

Я говорил про плюс по сравнению с while. Вообще-то.


Digitman   (2005-11-08 14:05:00) [3]


> begin...end ©   (08.11.05 13:54) [4]


> Плюс: значение StringList.Count вычисляется только один
> раз.


в соответствии со спецификацией Паскаля граничные значения переменной for-цикла вычисляются один раз при исполнении for-оператора внезависимости от toили downto


> umbra ©   (08.11.05 13:58) [5]


пардон ... можно) ... else я упустил из вида


begin...end   (2005-11-08 14:03:00) [4]

> umbra ©   (08.11.05 13:58) [5]

Пусть StringList[N] = ''. Тогда выполняется Delete, и строкой с номером N становится строка S, следующая за только что удалённой. Тем временем уже I = N + 1, и строка S окажется непросмотренной.


umbra   (2005-11-08 13:58:00) [5]

2 Digitman ©   (08.11.05 13:50) [3]

почему нельзя?


begin...end   (2005-11-08 13:54:00) [6]

for i := StringList.Count - 1 downto 0 do
 if StringList[i] = '' then
   StringList.Delete(i)

Плюс: значение StringList.Count вычисляется только один раз.


Digitman   (2005-11-08 13:50:00) [7]


> umbra


нельзя так)

i := StringList.Count;
while i > 0 do
 begin
  dec(i);
  if StringList[i] = '' then
    StringList.Delete(i)
 end;


pathfinder   (2005-11-08 13:43:00) [8]


> umbra ©

Спасибо!


umbra   (2005-11-08 12:54:00) [9]


i := 0;
while i < StringList.Count do
 if StringList[i] = '' then
   StringList.Delete(i)
 else
   inc(i);


Наверх

Титульная страница Поиск, карта сайта Написать письмо