Как перевести из делфи на паскаль? - Free Pascal
Формулировка задачи:
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;Решение задачи: «Как перевести из делфи на паскаль?»
textual
Листинг программы
Function StrToBin(TextValue:String):String;
Function DecToBin(x:integer):string;
const c:array [0..1] of char= ('0','1');
var res:string;
d:0..1;
begin
res:='';
while x<>0 do
begin
d:=x mod 2;
res:=c[d]+res;
x:=x div 2;
end;
DecToBin:=res;
end;
Var
TempString:String;
OctString:String;
BinString:String;
i,k:Integer;
Begin
For i:=1 To Length(TextValue) Do
Begin
TempString:=DecToBin(Ord(TextValue[i]));
OctString:='';
If Length(TempString)<8 Then
For k:=1 To 8-Length(TempString) Do
OctString:=OctString+'0';
TempString:=OctString+TempString;
BinString:=BinString+TempString;
StrToBin:=BinString;
End;
End;
Var i,k:Integer;
BinString:String;//Здесь двоичное представление текста сообщения
RecString:String; //Здесь считанная из файла строка
MY_IN_FILE:Text; //Файл-контейнер
MY_OUT_FILE:Text; //Файл-контейнер с сообщением
Begin
Assign(MY_IN_FILE,'1.txt');
Assign(MY_OUT_FILE,'Задание3.txt');
Reset(MY_IN_FILE);
ReWrite(MY_OUT_FILE);
writeln('Введите строку');
readln(BinString);
BinString:=StrToBin(BinString);
k:=1;
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);
'0':Insert('',RecString,i);
End;
Inc(k);
End;
End;
WriteLn(MY_OUT_FILE,RecString);
End;
Close(MY_OUT_FILE);
Close(MY_IN_FILE);
writeln('Строка спрятана');
readln
End.
Объяснение кода листинга программы
- Функция StrToBin преобразует строку в двоичное представление.
- Функция DecToBin преобразует десятичное число в двоичное представление.
- Вектор c содержит символы '0' и '1'.
- Переменная res используется для хранения промежуточных результатов в функции StrToBin.
- Переменная d используется для хранения остатка от деления в функции StrToBin.
- Переменная x используется в цикле while в функции StrToBin.
- Переменная TempString используется для хранения промежуточных результатов в функции StrToBin.
- Переменная OctString используется для хранения промежуточных результатов в функции StrToBin.
- Переменная BinString используется для хранения промежуточных результатов в функции StrToBin.
- Переменная i используется в цикле for в функции StrToBin.
- Переменная k используется в цикле for в функции StrToBin.
- Переменная RecString используется для чтения данных из файла в функции StrToBin.
- Переменная MY_IN_FILE используется для чтения данных из файла в функции StrToBin.
- Переменная MY_OUT_FILE используется для записи данных в файл в функции StrToBin.
- Цикл while в функции StrToBin используется для чтения данных из файла до конца.
- Вектор c используется для сравнения символов в функции StrToBin.
- Функция Insert используется для вставки пробелов или удаления пробелов в строке в функции StrToBin.
- Переменная k используется для отслеживания количества прочитанных символов в функции StrToBin.
- Переменная i используется в цикле for в функции StrToBin.
- Переменная BinString используется для хранения двоичного представления текста сообщения в функции StrToBin.