У меня тут проблемка возникла: Как найти нужные мне слова в memo записанные в edit (у меня находит только 1 встречающееся дальше не ищет) и если найдено слово в строке ,то каждое слово етой строки записать в таблицу в отдельную колонку . Как мне это организовать?? плизз помогите
procedure SplitWords(line :string; var words :TStrings); var s:string; begin s:=Trim(line); // обрезаем пробелы спереди и сзади while pos(' ',s)>0 do begin Words.Add(copy(s,1,pos(' ',s)-1)); delete(s,1,pos(' ',s)); while (length(s)>0) and (s[1]=' ') do delete(s,1,1); end; if length(s)>0 then Words.Add(s); end;
procedure TForm1.Button1Click(Sender: TObject); var i, j :integer; SearchWords, LineWords :TStrings; begin // создаем пустой список слов SearchWords:=TStringList.Create; LineWords:=TStringList.Create; try // добавляем в список слова, которые будем искать SplitWords(Edit1.Text,SearchWords); if SearchWords.Count=0 then raise Exception.Create('Не заданы слова для поиска!');
// ищем слова for i:=0 to Memo1.Lines.Count-1 do for j:=0 to SearchWords.Count-1 do if pos(SearchWords.Strings[j],Memo1.Lines.Strings[i])>0 then begin // добавляем найденное в таблицу StringGrid1.RowCount:=StringGrid1.RowCount+1; LineWords.Clear; SplitWords(Memo1.Lines.Strings[i],LineWords); if StringGrid1.ColCount<LineWords.Count then StringGrid1.ColCount:=LineWords.Count; StringGrid1.Rows[StringGrid1.RowCount-1].Assign(LineWords); end;
if StringGrid1.RowCount>1 then StringGrid1.FixedRows:=1;