Код:
procedure FindWords;
var
C, S, W: string;
Q: Boolean;
P, I: Integer;
begin
Edit3.Clear;
S := Edit1.Text;
C := Edit2.Text;
W := '';
P := Pos(C, S); // Находим первое вхождение символа
Q := P > 0;
while Q do
begin
W := C; //начинаем составлять слово
I := P - 1;
while (I > 0) and (S[i] <> ' ') do //добавляем в слово предыдущие по пробела символы
begin
W := S[i] + W;
Dec(I);
end;
I := P + 1;
while (I <= Length(S)) and (S[i] <> ' ') do //добавляем к слову последующие до пробела символы
begin
W := W + S[i];
Inc(I);
end;
Edit3.Text := Edit3.Text + W + ', ';
S := Copy(S, I, Length(S)); // отрезаем из текста рассмотренный кусок текста
P := Pos(C, S);
Q := P > 0;
end;
end;
Вот, как-то так наверно, не проверял, конечно.