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

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

Поиск образца текста в StringList


Мимо прогодивший ©   (2014-01-14 18:17:00) 

Так как "Начинающим" не работает, пишу вопрос сюда.

Есть программа где текст хранится в StringList. Нужно по всему его тексту выполнить поиск подстроки, подстрока не может начинаться в Strings[I], а заканчиваться на Strings[I + 1]. Поэтому код примерно такой:
 
 S: String;
 ..........................................................
 for i := 0 to StringList.Count - 1 do begin
   S := StringList.Strings[i];
   .......................................
   поиск образца текста в "S"
 end;


Каждый раз нужно делать S := StringList.Strings[i] ?


antonn   (2014-01-14 20:58:00) [1]


> Юрий Зотов ©   (14.01.14 18:35) [3]
>
> > antonn ©   (14.01.14 18:31) [1]
> >
> > if(pos('popa',StringList.Strings[i]))
> > если в лоб
>
> Это не в лоб.

я к тому, что неужели оптимизатор конструкцию автора к моему виду не видет? а если приведет - я лишь синтаксисом написал то что у него и есть


Германн   (2014-01-14 19:59:00) [2]


> но как то не удобно параметром постоянно указывать StringList.Strings[i]

Неудобно параметром указывать StringList.Text. А StringList.Strings это просто массив указателей.


Мимо прогодивший   (2014-01-14 19:01:00) [3]

А, во, возможна следующая конструкция:

string(StringList.Strings[i])[j];


Мимо прогодивший   (2014-01-14 18:55:00) [4]


> А если искомая подстрока не содержит CR/LF, то можно искать
> и без цикла, в StringList.Text


Содержит, текст грузится с текстовых файлов


Мимо прогодивший   (2014-01-14 18:54:00) [5]

Я за то что нельзя:

for i := 0 to StringList.Count - 1 do
 for j := 1 to Length(StringList.Strings[i]) do begin

    StringList.Strings[i] [j]
 
 end;
Copy(SL.Strings[i],2,5)



> Можно и не делать, а искать прямо в StringList.Strings[i].

Подскажите плиз.


> if(pos('popa',StringList.Strings[i]))

так конечно можно, но как то не удобно параметром постоянно указывать StringList.Strings[i]


Юрий Зотов   (2014-01-14 18:35:00) [6]

> antonn ©   (14.01.14 18:31) [1]
>
> if(pos('popa',StringList.Strings[i]))
> если в лоб


Это не в лоб.


Юрий Зотов   (2014-01-14 18:34:00) [7]

Можно и не делать, а искать прямо в StringList.Strings[i].

А если искомая подстрока не содержит CR/LF, то можно искать и без цикла, в StringList.Text


antonn   (2014-01-14 18:31:00) [8]

if(pos('popa',StringList.Strings[i]))
если в лоб


Наверх

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