Вывести строку с введенным словм - Pascal ABC

Формулировка задачи:

Здравствуйте, нужна ваша помощь. Имеется задача: Дан текст, хранящийся в текстовом файле. Вводится слово. Если введенное слово имеется в тексте, то вывести строку. Вот мой код:
uses crt;
const rz=[' ',',','.','?','!'];{разделители слов}
var f:text;
    i,p:byte;
    name,s,sl:string;
begin
name:='file.txt';
assign(f,name);
reset(f);
writeln('Введите слово для пoиска в файле ',name);
readln(sl);
while not eof(f) do
 begin
  readln(f,s);
  p:=pos(sl,s);{первое вхождение сочетания букв слова в строке}
  if (p>0)and((p=1)or(s[p-1] in rz)){если есть и оно первое или перед ним разделитель}
  and((s[p+length(sl)] in rz)or(p+length(sl)=length(sl))) {и за ним разделитель
                                                          или оно последнее в строке}
  then   Writeln(s) else   Writeln('Введенное Вами слово не встречается ни в одной строке файла'); break;
 end;
close(f);
readln
end.
Но он не работает, я так понимаю, что условием что-то не так. Заранее благодарен

Код к задаче: «Вывести строку с введенным словм - Pascal ABC»

textual
const rz=[' ',',','.','?','!'];{разделители слов}
var f:text;
    i,p:byte;
    name,s,sl,s2:string;
begin
name:='file.txt';
assign(f,name);
reset(f);
writeln('Введите слово для пoиска в файле ',name);
readln(sl);
s2:='';
while not eof(f)and(s2='') do
 begin
  readln(f,s);
  p:=pos(sl,s);{первое вхождение сочетания букв слова в строке}
  if (p>0)and((p=1)or(s[p-1] in rz)){если есть и оно первое или перед ним разделитель}
  and((s[p+length(sl)] in rz)or(p+length(sl)>length(s))) {и за ним разделитель
                                                          или оно последнее в строке}
  then s2:=s;
 end;
close(f);
if s2<>'' then Writeln(s)
else Writeln('Введенное Вами слово не встречается ни в одной строке файла');
readln
end.

5   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы