Код:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows;
Function menu:integer; //Вывод меню на экран
var choice:integer;
begin
writeln;
writeln (' ','1.Зашифровать текст.');
writeln (' ','2.Дешифровать текст.');
writeln (' ','3.Завершение работы.');
repeat
writeln('Ваш выбор:');
readln(choice)
until (choice>=1) or (choice<=3);
Menu:=choice
end;
Procedure code(file_name,file_name1,file_name2:string); //кодировка текста
var f,f1,f2: file of char;
text,key:Char;
t1,t2,t3:Integer;
begin
Assign(f,file_name);
Assign(f1,file_name1);
Assign(f2,file_name2);
Reset(f);
Reset(f1);
Rewrite(f2);
while not Eof(f) do
begin
read(f,text);
read(f1,key);
t1:=ord(Text) mod 256;
t2:=ord(Key) mod 256;
t3:=t1+t2;
text:=chr(t3);
write(f2,text);
write(text)
end;
Close(f);
Close(f1);
Close(f2)
end;
Procedure decode(file_name,file_name1,file_name2:string);// декодировка текста
var f,f1,f2: textfile;
text,key:Char;
t1,t2,t3:Integer;
begin
Assign(f,file_name);
Assign(f1,file_name1);
Assign(f2,file_name2);
Reset(f);
Reset(f1);
Rewrite(f2);
while not Eof(f) do
begin
read(f,text);
read(f1,key);
t1:=ord(Text) mod 256;
t2:=ord(Key) mod 256;
t3:=t1-t2;
text:=chr(t3);
write(f2,text);
write(text)
end;
Close(f);
Close(f1);
Close(f2)
end;
var
exit_,file_name,file_name1,file_name2:string;
mn:Integer;
begin
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
Repeat
mn:=Menu;
case mn of
1:begin
Writeln('Введите имя файла текста для кодировки: ');
Readln(file_name);
Writeln('Введите имя файла с ключом ');
Readln(file_name1);
Writeln('Введите имя файла для сохранения закодированного текста ');
Readln(file_name2);
code(file_name,file_name1,file_name2);
end;
2: begin
Writeln('Введите имя файла текста для кодировки: ');
Readln(file_name);
Writeln('Введите имя файла с ключом ');
Readln(file_name1);
Writeln('Введите имя файла для сохранения закодированного текста ');
Readln(file_name2);
decode(file_name,file_name1,file_name2);
end;
end; //case
if mn<>3 then
begin
Writeln;
write (' ','Завершить работу? (Y/N)');
readln (exit_);
writeln
end;
UNTIL (exit_='y') or (exit_='Y') or (mn=3)
end.
выделяет read(f1,key1) в первой процедуре и кодирует только несколько первых символов из файла