Код:
Var
i:SmallInt;
k:LongInt;
BinString:String;//Здесь двоичное представление текста сообщения
RecString:String; //Здесь считанная из файла строка
MY_IN_FILE:TextFile; //Файл-контейнер
MY_OUT_FILE:TextFile; //Файл-контейнер с сообщением
Begin
AssignFile(MY_IN_FILE,FileName);//Присваиваем файлу-контейнеру
//дескриптор MY_IN_FILE. В переменной FileName имя файла, имя в эту
//переменную заносится процедурой кнопки Открыть файл
AssignFile(MY_OUT_FILE,’Задание3.txt’); //Создаём файл Задание3.txt в
//который запишем содержимое файла-контейнера и зашифрованное сообщение и
//присваиваем ему дескриптор MY_OUT_FILE.
Reset(MY_IN_FILE);//Открываем файл-контейнер для чтения
ReWrite(MY_OUT_FILE);//Открываем файл для записи
BinString:=StrToBin(Edit1.Text);//В строке BinString двоичное
//представление строки введённой в Edit1
k:=1; //Присваиваем k:=1 для того чтобы обрабатывать BinString с
//первого символа
While Not Eof(MY_IN_FILE) Do //До конца файла контейнера
Begin
ReadLn(MY_IN_FILE,RecString);//Читаем одну строчку из файла
For i:=1 To Length(RecString) Do//Перебираем символы этой строчки
Begin
If RecString[i]=' ' Then//Если встретился пробел то проверяем
//чему равен очередной бит скрываемой информации
Begin
Case BinString[k] Of
'1':Insert(' ',RecString,i);//Если бит равен 1 то перед пробелом пишем
//пробел
'0':Insert('',RecString,i);//Если бит равен 0 то ничего не пишем
End;
Inc(k);//Увеличиваем k на 1 чтобы обработать следущий бит информации
End;
End;
WriteLn(MY_OUT_FILE,RecString); //Записываем обработанную строку в файл
End;
CloseFile(MY_OUT_FILE); //Закрываем файл-контейнер
CloseFile(MY_IN_FILE); //Закрываем файл-контейнер с спрятанным
//сообщением
ShowMessage('Строка спрятана'); //Выводим сообщение о завершении работы
End;