Текущий архив: 2006.02.12;
Скачать: CL | DM;
Внизудаление строк из списка Найти похожие ветки
← →
V0va (2006-01-24 12:19) [0]мне нужно удалить из списка некоторые строки соответствующие моему условию. Как наиболее рационально реализовать код удаления, потому что мой код ужасно примитивный. Поделитесь пожалста.
Вот он
procedure DeleteThis(const ID: Word);
var aItem : pItem;
i, j, k, u : Word;
begin
j := FList.Count;
for i := 0 to j -1 do
begin
u := FList.Count;
for k := 0 to u -1 do
begin
aItem := FList.Items[k];
if (aItem.ItsID = ID) then
begin
FList.Remove(aItem);
Break;
end;
end;
end;
end;
← →
ЮЮ © (2006-01-24 12:31) [1]а зачем цикл в цикле? Неужели после удаления элемента при первом прорходе его стоит искать ещё FList.Count - 1 раз?
← →
V0va (2006-01-24 12:33) [2]фишка в том, что там их много соответсвующих этому же условию, потому приходится искать до победного, а вот так вот если сделаешь, то сами знаете что будет "List index out of bounds" ;(
for k := 0 to FList.Count -1 do
begin
aItem := FList.Items[k];
if (aItem.ItsID = ID) then FList.Remove(aItem);
end;
← →
Ega23 © (2006-01-24 13:15) [3]Используй не for, а while ибудет тебе щщастье.
← →
MBo © (2006-01-24 13:20) [4]for k := FList.Count -1 downto 0 do
← →
Aleks © (2006-01-24 13:38) [5])
← →
V0va (2006-01-24 13:56) [6]
> for k := FList.Count -1 downto 0 do
дада)) туплю туплю))
Страницы: 1 вся ветка
Текущий архив: 2006.02.12;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.039 c