Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > поиск слов в tstrings


Автор: Aprol 9.10.2007, 10:09
мне нужно переодически проверять некоторые переменные tstrings на наличие определенных слов.
Как это сделать (возможно уже есть алгоритм) и маскимально весь этот процесс ускорить.

Добавлено через 2 минуты и 34 секунды
Код

function _s(kod:tstrings):boolean;
var rt,rt2,rt3,rt4,rt5:boolean;
i:integer;
 begin
  _s:=false;
  for i:=0 to  kod.Count-1 do
  begin
  if pos('error',kod[i])<>0 then rt:=true;
  if pos('time',kod[i])<>0 then rt2:=true;
  if pos('qwerty',kod[i])<>0 then rt3:=true;
  if pos('asm',kod[i])<>0 then rt4:=true;
  if pos('log',kod[i])<>0 then rt5:=true;
  if rt or rt2 or rt3 or rt4 or rt5 then begin result:=false; break;end
     else  result:=true; 
  end;
  
 end;

Это так наброски , но и они не хотят работать.

Автор: Alexeis 9.10.2007, 10:32
Aprol, используйте регулярные выражения. Есть сторонний компонент TRegExpr. В него задается маска (регулярка), где описаны все условия поиска, и производиться запуск. Алгоритм будет искать совпадения в строке по этому условию. Возможности задания этих условий весьма большие, а тут банальное перечисление (вариантов совпадения) легко делается.

Автор: Akella 9.10.2007, 16:19
а если так

Код

if pos(AnsiUpperCase('error'), AnsiUpperCase(kod[i])) <> 0 then rt:=true;

Автор: Aprol 12.10.2007, 14:30
На сколько долго эта функция изменения регистра увеличивает время выполнени алгоритма?

Автор: Alexeis 12.10.2007, 14:43
Цитата(Aprol @  12.10.2007,  14:30 Найти цитируемый пост)
На сколько долго эта функция изменения регистра увеличивает время выполнени алгоритма? 

  На время линейно зависящее от длинны исходного текста.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)