Guest User

Untitled

a guest
Aug 11th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 7.42 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.ExtCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     GroupBox1: TGroupBox;
  12.     Memo1: TMemo;
  13.     GroupBox2: TGroupBox;
  14.     RadioButton1: TRadioButton;
  15.     RadioButton2: TRadioButton;
  16.     RadioButton3: TRadioButton;
  17.     BitBtn1: TBitBtn;
  18.     GroupBox4: TGroupBox;
  19.     BitBtn2: TBitBtn;
  20.     BitBtn3: TBitBtn;
  21.     BitBtn4: TBitBtn;
  22.     Memo2: TMemo;
  23.     Label1: TLabel;
  24.     procedure BitBtn4Click(Sender: TObject);
  25.     procedure BitBtn1Click(Sender: TObject);
  26.     procedure get_number;
  27.     procedure check;
  28.     procedure check_ID;
  29.     function s8(num:string):string;
  30.     function triada(tri:string):string;
  31.     function s16(num:string):string;
  32.     function tetrada(tet:string):string;
  33.     function s10(num:string):string;
  34.     procedure BitBtn2Click(Sender: TObject);
  35.  
  36.  
  37.     procedure SpeedButton1Click(Sender: TObject);
  38.     procedure SpeedButton2Click(Sender: TObject);
  39.     procedure SpeedButton3Click(Sender: TObject);
  40.     procedure BitBtn3Click(Sender: TObject);
  41.     procedure Memo1Click(Sender: TObject);
  42.     procedure Memo1KeyPress(Sender: TObject; var Key: Char);
  43.  
  44.  
  45.  
  46.   private
  47.     { Private declarations }
  48.   public
  49.     { Public declarations }
  50.   end;
  51.  
  52. var
  53.   Form1: TForm1;
  54.   number:string;
  55.   tri:string;
  56.   tet:string;
  57.   resultat8:string;
  58.   resultat16:string;
  59.   check_number:boolean;
  60. implementation
  61.  
  62. {$R *.dfm}
  63.  
  64. uses Unit2;
  65.  
  66.  
  67.  
  68. procedure TForm1.BitBtn1Click(Sender: TObject);
  69. begin
  70. memo2.Clear;
  71. number:='';
  72. check_number:=false;
  73. get_number;
  74.  
  75.  
  76. end;
  77.  
  78. procedure TForm1.BitBtn2Click(Sender: TObject);
  79. begin
  80. showmessage('Название продукта: Перевод чисел'+#10#13+'Курсовой проект по дисциплине "Методы программирования" 4 семестр'+#10#13+'Разработчик: Перепечо Георгий (группа 042 "Компьютерная безопасность")'+#10#13+'Copyright 2012'+#169+' Все права защищены.');
  81. end;
  82.  
  83. procedure TForm1.BitBtn3Click(Sender: TObject);
  84. begin
  85. showmessage('Данное программное обеспечение предназначено для перевода чисел из двоичной системы счисления в десятеричную, восьмеричную или шестнадцатеричную, по выбору пользователя.');
  86. end;
  87.  
  88. procedure TForm1.BitBtn4Click(Sender: TObject);
  89. begin
  90. If messageBox(0,'Вы действительно хотите выйти?','Подтверждение',
  91. mb_YesNo)=mrYes then begin
  92.   application.Terminate;
  93. end;
  94. end;
  95.  
  96.  
  97.  
  98.  
  99.  
  100. procedure TForm1.check;  // Проверка направления перевода
  101. begin
  102.  
  103. if radiobutton1.Checked=true then s8(number);
  104. if radiobutton2.Checked=true then s10(number);
  105. if radiobutton3.Checked=true then s16(number);
  106. end;
  107.  
  108. procedure TForm1.check_ID;  //Проверка корректности исходных данных
  109. var
  110. i:integer;
  111.  
  112. begin
  113. for i := 1 to length(number) do begin
  114.   if (number[i]<>'1')and(number[i]<>'0') then begin
  115.    showmessage('Ошибка в исходных данных! Присуствуют лишние символы');
  116.    check_number:=true;
  117.    exit;
  118.   end;
  119. end;
  120. if check_number=false then begin
  121.  label1.Visible:=true;
  122.  check;
  123. end;
  124. end;
  125.  
  126. procedure TForm1.get_number;  //Получение одного числа
  127. var
  128. i:integer;
  129. begin
  130.  
  131. for i:= 1 to length(memo1.Text)+1 do begin
  132. if (i=length(memo1.Text)+1)or(memo1.Text[i]=',') then begin
  133. check_ID; end
  134. else begin number:=number+memo1.Text[i];
  135.  
  136. end;
  137. end;
  138. if check_number=false then begin
  139.  memo1.Text:=memo2.Text;
  140.  showmessage('Данные обработаны успешно!');
  141.  end;
  142. end;
  143.  
  144.  
  145.  
  146. procedure TForm1.Memo1Click(Sender: TObject);
  147. begin
  148. label1.Visible:=false;
  149. end;
  150.  
  151. procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
  152. begin
  153. label1.Visible:=false;
  154. end;
  155.  
  156. function TForm1.s10(num: string): string;   //Перевод в десятеричную систему счисления
  157. var
  158.  l:integer;
  159.  i:integer;
  160.  sum:real;
  161. begin
  162.  l:=length(num);
  163.  sum:=0;
  164.  for i:=1 to l do
  165.  begin
  166.   sum:=sum+strtoint(num[i])*(exp(ln(2)*(l-i)));
  167.  end;
  168.   // form2.Memo1.Text:=form2.Memo1.Text+floattostr(sum)+',';
  169.   memo2.Text:=memo2.Text+number+' = '+floattostr(sum)+',';
  170.  number:='';
  171.  sum:=0;
  172. end;
  173.  
  174. function TForm1.s16(num: string): string; //Перевод в шестнадцатеричную систему счисления
  175. var
  176.  i:integer;
  177.  l:integer;
  178.  k:integer;
  179. begin
  180.  l:=0;
  181.  tet:='';
  182.  while (length(num) mod 4)<>0 do
  183.  begin
  184.   num:='0'+num;  {Добавляем ноль в начало числа, для получения полной тетрады}
  185.  end;
  186.  for i:=1 to length(num)+1 do
  187.  begin
  188.   l:=l+1;
  189.    if l<5 then begin
  190.     tet:=tet+num[i]; {Записываем по одному символу двоичного кода}
  191.  
  192.    end
  193.    else begin
  194.        tetrada(tet);
  195.     tet:='';
  196.     tet:=tet+num[i];
  197.     l:=1;
  198.    end;
  199.  end;
  200.  memo2.Text:=memo2.Text+number+' = '+resultat16+',';
  201.  resultat16:='';
  202.  number:='';
  203. end;
  204.  
  205. function TForm1.s8(num:string):string;  //Перевод в восьмеричную систему счисления
  206. var
  207.  i:integer;
  208.  l:integer;
  209.  k:integer;
  210. begin
  211.  
  212.  l:=0;
  213.  tri:='';
  214.  while (length(num) mod 3)<>0 do
  215.  begin
  216.   num:='0'+num;  {Добавляем ноль в начало числа, для получения полной триады}
  217.  end;
  218.  for i:=1 to length(num)+1 do
  219.  begin
  220.   l:=l+1;
  221.    if l<4 then begin
  222.     tri:=tri+num[i]; {Записываем по одному символу двоичного кода}
  223.    end
  224.    else begin
  225.  
  226.     triada(tri);
  227.     tri:='';
  228.     tri:=tri+num[i];
  229.     l:=1;
  230.    end;
  231.  end;
  232. memo2.Text:=memo2.Text+number+' = '+resultat8+',';
  233.  resultat8:='';
  234.  number:='';
  235. end;
  236.  
  237. procedure TForm1.SpeedButton1Click(Sender: TObject);
  238. begin
  239. memo1.Font.Size:=memo1.Font.Size+1;
  240. end;
  241.  
  242. procedure TForm1.SpeedButton2Click(Sender: TObject);
  243. begin
  244. memo1.Font.Size:=memo1.Font.Size-1;
  245. end;
  246.  
  247. procedure TForm1.SpeedButton3Click(Sender: TObject);
  248. begin
  249. Messagedlg('По умолчанию выбирается папка, в которой размещена программа. Иначе, папку нужно выбрать самостоятельно',mtinformation,[mbok],0);
  250. end;
  251.  
  252. function TForm1.tetrada(tet: string): string;
  253. var
  254.  t16:string;
  255. begin
  256.  if tet='0000' then t16:='0';
  257.  if tet='0001' then t16:='1';
  258.  if tet='0010' then t16:='2';
  259.  if tet='0011' then t16:='3';
  260.  if tet='0100' then t16:='4';
  261.  if tet='0101' then t16:='5';
  262.  if tet='0110' then t16:='6';
  263.  if tet='0111' then t16:='7';
  264.  if tet='1000' then t16:='8';
  265.  if tet='1001' then t16:='9';
  266.  if tet='1010' then t16:='A';
  267.  if tet='1011' then t16:='B';
  268.  if tet='1100' then t16:='C';
  269.  if tet='1101' then t16:='D';
  270.  if tet='1110' then t16:='E';
  271.  if tet='1111' then t16:='F';
  272.  tet:='';
  273.  resultat16:=resultat16+t16;
  274.  
  275. end;
  276.  
  277.  
  278.  
  279.  
  280. function TForm1.triada(tri: string): string;
  281. var
  282. t8:string;
  283. begin
  284.  if tri='000' then t8:='0';
  285.  if tri='001' then t8:='1';
  286.  if tri='010' then t8:='2';
  287.  if tri='011' then t8:='3';
  288.  if tri='100' then t8:='4';
  289.  if tri='101' then t8:='5';
  290.  if tri='110' then t8:='6';
  291.  if tri='111' then t8:='7';
  292.   resultat8:=resultat8+t8;
  293.  tri:='';
  294. end;
  295.  
  296.  
  297. end.
Add Comment
Please, Sign In to add comment