Помощь - Поиск - Пользователи - Календарь
Полная версия: работа с таблицами
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
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;


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