Форум: "Начинающим";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];
ВнизУдаление из списка строк Найти похожие ветки
← →
Дмитрий_177 (2005-12-25 13:29) [0]Есть список, Str: TStringList; и мне нужно из него удалить строки которые удовлетворяют какому-то условию. Сделал я так:
if Str.Count > 0 then
begin
for i := 0 to Str.Count - 1 do
begin
if Str[i] = <чему то там> then
begin
Str.Delete(i);
end;
end;
end;
Т.к. нужно все строки проверить и удалить нужные, break в цикле не стоит. Но у меня вылитает ошибка при удалении, я как понимаю она из за того, что цикл пробегает по всем строкам, но т.к. некоторые строки вы удаляем в этом цикле, то то ближе к концу цикла он уже начинает проверять строки, которых уже нету... Так вот как мне лучше организовать такое удаление? Пока я думаю сделать вот как: создать численный массив, и в цикле в этот массив вносить индексы тех строк которые нужно удалить, и потом после цикла удалить их... может есть еще получше какойнибудь способ?
← →
Anatoly Podgoretsky © (2005-12-25 13:38) [1]
for i := Str.Count - 1 downto 0 do
← →
Кефир87 © (2005-12-25 13:38) [2]
for i := Str.Count - 1 downto 0 do
begin
if Str[i] = <чему то там> then
begin
Str.Delete(i);
end;
end;
← →
Кефир87 © (2005-12-25 13:39) [3]Одновременно 8)
← →
Дмитрий_177 (2005-12-26 15:57) [4]Как оказалось не так уж все и сложно ))) Спасибо!
← →
SergP. (2005-12-26 16:37) [5]
> Кефир87 © (25.12.05 13:38) [2]
>
> for i := Str.Count - 1 downto 0 do
> begin
> if Str[i] = <чему то там> then
> begin
> Str.Delete(i);
> end;
> end;
а зачем все эти бегины и енды?
← →
Дмитрий_177 (2005-12-27 00:06) [6]SergP.
> а зачем все эти бегины и енды?
Это кому как нравится, тут можно и без них обойтись...))) Но мне как-то удобней читать с бегинами и индами код... да и привык уже их так стать, что после for или еще чегонибудь там всегда бегин )))
← →
Германн © (2005-12-27 01:14) [7]2 Anatoly Podgoretsky © (25.12.05 13:38) [1]
2 Кефир87 © (25.12.05 13:38) [2]
А вот интересно. Насколько умён "оптимизатор"?
Включается ли он только тогда, когда границы цикла for включают только "константы"?
Я говорю только о реализации самого цикла, а не его тела.
← →
Джо © (2005-12-27 01:16) [8]
> [7] Германн © (27.12.05 01:14)
Так в любом случае, с функциональной точки зрения, границы диапазона для цикла for и являются константами? Или я не понял вопроса?
← →
Германн © (2005-12-27 01:22) [9]2 Джо © (27.12.05 01:16) [8]
Наверно не понял. :-)
Границы диапазона являются константами в том смысле, что они вычисляются до выполнения цикла. Но если они, точнее некие значения, выражения и т.п., которыми они представлены в исходнике могут меняться в Run-Time, то "оптимизатор" видя в исходнике такое сразу отключается.
← →
Джо © (2005-12-27 01:24) [10]
> [9] Германн © (27.12.05 01:22)
А... ну, может быть не знаю, не экспериментировал. Сорри за оффтопик.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.014 c