Помощь - Поиск - Пользователи - Календарь
Полная версия: работа с таблицами
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
Frozen
У меня тут проблемка возникла:
Как найти нужные мне слова в memo записанные в edit (у меня находит только 1 встречающееся дальше не ищет) и если найдено слово в строке ,то
каждое слово етой строки записать в таблицу в отдельную колонку . Как мне это организовать?? плизз помогите
Atos
Цитата
у меня находит только 1 встречающееся дальше не ищет)

Приведи код процедуры, посмотрим, что не так.
hiv
Делаешь с помощью строковых списков, вот так:
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('Не заданы слова для поиска!');

    // очищаем результирующую таблицу
    StringGrid1.ColCount:=1;
    StringGrid1.RowCount:=1;
    StringGrid1.Rows[0].Clear;

    // ищем слова
    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;

  finally
    SearchWords.Free;
    LineWords.Free;
  end;
end;


Все компоненты стандартные...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.