Как перевести из делфи на паскаль? - 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.

Объяснение кода листинга программы

  1. Функция StrToBin преобразует строку в двоичное представление.
  2. Функция DecToBin преобразует десятичное число в двоичное представление.
  3. Вектор c содержит символы '0' и '1'.
  4. Переменная res используется для хранения промежуточных результатов в функции StrToBin.
  5. Переменная d используется для хранения остатка от деления в функции StrToBin.
  6. Переменная x используется в цикле while в функции StrToBin.
  7. Переменная TempString используется для хранения промежуточных результатов в функции StrToBin.
  8. Переменная OctString используется для хранения промежуточных результатов в функции StrToBin.
  9. Переменная BinString используется для хранения промежуточных результатов в функции StrToBin.
  10. Переменная i используется в цикле for в функции StrToBin.
  11. Переменная k используется в цикле for в функции StrToBin.
  12. Переменная RecString используется для чтения данных из файла в функции StrToBin.
  13. Переменная MY_IN_FILE используется для чтения данных из файла в функции StrToBin.
  14. Переменная MY_OUT_FILE используется для записи данных в файл в функции StrToBin.
  15. Цикл while в функции StrToBin используется для чтения данных из файла до конца.
  16. Вектор c используется для сравнения символов в функции StrToBin.
  17. Функция Insert используется для вставки пробелов или удаления пробелов в строке в функции StrToBin.
  18. Переменная k используется для отслеживания количества прочитанных символов в функции StrToBin.
  19. Переменная i используется в цикле for в функции StrToBin.
  20. Переменная BinString используется для хранения двоичного представления текста сообщения в функции StrToBin.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы