Шифрование текста путем замены букв

Всем привет, в общем, у меня такая проблема:

Задача: Описать процедуру EN_CodeText(SS, KK), которая шифрует текстовый файл с именем SS, выполняя циклическую замену каждой русской буквы на букву того же регистра, расположенную в алфавите на KK-й позиции после шифруемой буквы (0<K<10)(0<K<10). Например, при K=3K=3 «А» перейдет в «Г», «я» - в «в». Букву «ё» в алфавите не учитывать, считая, что за буквой «е» сразу идет «ж». Символы, не являющиеся русскими буквами, при шифровании не изменять. Используя эту процедуру и зная кодовое смещение KK, зашифровать файл с указанным именем.

Код есть, но почему то выдает такую ошибку. Файл находится в папке с самой прогой, если что. Кто знает, в чем проблема/ошибка?

PascalВыделить код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

 
type
 St=String;
 
var S:St;
    K:integer;
 
Procedure EN_CodeText(S:St;K:integer);
var
 F_out,F_in: Text;
 
 TempS:St;
 i,i2:integer;
 
begin
 Assign(F_in,S);
 Reset(F_in);
 
 Assign(F_out,'~'+S);
 ReWrite(F_out);
 
 While not(eof(F_in)) do
  begin
   Readln(F_in,TempS);
   for i2:=1 to K do
    begin
     i:=1;
     while (i<=Length(TempS)) do
      begin
       case ord(TempS[i]) of
        128..158,160..174,224..238:  TempS[i]:=chr(ord(TempS[i])+1);
        159: TempS[i]:=chr(128);
        175: TempS[i]:=chr(224);
        239: TempS[i]:=chr(160);
       end;
       inc(i);
     end;
    end;
   Writeln(F_out,TempS);
  end;
 Close(F_out);
 Close(F_in);
 
 Erase(F_in);
 Rename(F_out,S);
end;
 
begin
 Write('S: ');
 Readln(S);
 Write('K: ');
 Readln(K);
 EN_CodeText(S,K);
end.

Заранее спасибо

З.Ы. Ошибка в этом месте