Проверить, содержит ли указанное предложение слово «дом».(дом и домашний – разные слова)

андре

Добрый вечер не могли бы помочь доделать программу. написал программу которая пытается выполнить условия задачи,но есть одно но,мне мне нужно чтобы программа выдавала только слово "дом" при заданных условиях,а она выдает также и "домашний".Заранее спасибо! вот сама программа полностью: http://zalil.ru/upload/34004600 вот код программы:
unit gege;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
 
var f:textfile; flag: boolean;
slovo,sssr : string;
 
begin
Assignfile(f,'текст.txt');
flag:=false; Reset (f); slovo:=Edit1.Text; Memo1.Lines.Clear;
while not Eof (f) do
Begin
Readln (f, sssr) ;
if AnsiPos(slovo,sssr)>0 then flag:=true;
Memo1.lines .add(sssr);
end;
if flag then showmessage ('Да, слово содержится в файле')
else showmessage ('нет');
end;
end.
1 ответ

андре

procedure TForm1.Button1Click(Sender: TObject);
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  S, Sw : String;
  i, Len, LenW : Integer;
  F : Boolean;
begin
  S := Memo1.Text; //Исходный текст.
  Sw := AnsiUpperCase(Edit1.Text); //Искомое слово в верхнем регистре.
 
  Len := Length(S); //Длина текста.
  LenW := 0; //Длина очередного слова.
  F := False;
  for i := 1 to Len do begin //Перебор символов слева-направо.
    //Если символ не является разделителем.
    if not (S[i] in D) then begin
      //Учитываем символ в длине слова.
      Inc(LenW);
      //Отслеживаем конец слова.
      if (i = Len) or (S[i + 1] in D) then begin
        //Проверяем, совпадает ли текущее слово с заданным словом.
        if AnsiUpperCase(Copy(S, i - LenW + 1, LenW)) = Sw then begin
          F := True;
          Break;
        end;
        //Сброс длины слова.
        LenW := 0;
      end;
    end;
  end;
 
  //Ответ.
  if F then
    ShowMessage('Заданное слово найдено в тексте.')
  else
    ShowMessage('Заданное слово в тексте не обнаружено.');
end;