Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.47 MB
Время: 0.011 c
5-1121242211
Alexander_VC
2005-07-13 12:10
2006.01.15
Подключение редактора компонента cxGrid в Dream designer


14-1133625717
Nik8.
2005-12-03 19:01
2006.01.15
:))


14-1135103436
KOSS
2005-12-20 21:30
2006.01.15
Куда делась вкладка Diagram в Delphi for Microsoft Win32 2006?


2-1135248850
Scorpio
2005-12-22 13:54
2006.01.15
Oracle


2-1135346897
oleggar
2005-12-23 17:08
2006.01.15
filemapping





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский