![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление записей в 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);