Считать из файла текст и проверить его на палиндром

Значит задали мне написать программу которая считывает с файла текст и проверяет его на палиндром. Саму программу я написал(она работает), но когда пришло время связать её с файлом у меня что то пошло не так. Помогите пожалуйста, укажите на ошибку.
program s1;
var s:string;
    pal:text;
function Pa(s:string):boolean;
var i:integer;
    fl:boolean;
begin
  begin
    for i:=length(s) downto 1 do
    if s[i]=' ' then delete(s,i,1);
      begin
        for i:=1 to length(s) do
          begin
            if s[i] in ['A'..'Z','А'..'Я'] then s[i]:=chr(ord(s[i])+32);
          end;
      end;
  end;
fl:=true;
  for i:=1 to length(s) div 2 do
    if s[i]<>s[length(s)-i+1] then
      fl:=false;
      Result:=fl;
end;
begin
assign(pal, 'input.dat');
reset(pal);
while not eof (pal) do
begin
 read(pal,s);
 writeln(s);
end;
close(pal);
assign(pal, 'output.dat');
rewrite(pal);
 begin
   readln(pal,s);
    if Pa(s) then
      writeln(pal,'True')
    else
      writeln(pal,'False');
 end;
close(pal);
end.
2 ответа

read(pal,s);
Т.к. файл текстовый, думаю надо написать readln


program s1;
var s:string;
    a,b:string[255];
    pal,pal2:text;
function Pa(s:string):boolean;
var i:integer;
    fl:boolean;
begin
  begin
    for i:=length(s) downto 1 do
    if s[i]=' ' then delete(s,i,1);
      begin
        for i:=1 to length(s) do
          begin
            if s[i] in ['A'..'Z','А'..'Я'] then s[i]:=chr(ord(s[i])+32);
          end;
      end;
  end;
fl:=true;
  for i:=1 to length(s) div 2 do
    if s[i]<>s[length(s)-i+1] then
      fl:=false;
      Result:=fl;
end;
begin
assign(pal, 'input.dat');
reset(pal);
assign(pal2, 'output.dat');
rewrite(pal2);
while not eoln(pal) do
 begin
   readln(pal,s);
   writeln(pal2,s);
   writeln(pal2,Pa(s));
 end;
close(pal);
close(pal2);
end.
ВОТ!!! Я СДЕЛАЛ ЭТО!!!