- •Титульный лист
- •Техническое задание
- •Рецензия
- •Содержание
- •Введение
- •1 Общая часть
- •2 Специальная часть
- •2.1 Постановка задачи
- •2.2 Требования к программе
- •2.3 Требования к программному обеспечению
- •2.4 Требования к составу и параметрам технических средств
- •2.5 Описание алгоритма
- •2.6 Контрольный пример
- •2.7. Результаты решения задачи
- •3.4. Порядок работы
- •3.5. Исходный код
- •Заключение
- •Список литературы
3.4. Порядок работы
Для правильного функционирования системы необходимо сначала ввести данные. Для наиболее простого ввод информации мы используем формы ввода. Вся информация обрабатывается мгновенно и выводится в соседнем окне.
Порядок работы:
- Запустить приложение «Dec to Hex». Запуск осуществляется двойным нажатием левой кнопки мышки;
- Появится «Главное меню», которое управляет следующими элементами (см. Приложение 2):
- Кнопка вычисления;
- Кнопка очистки данных;
- Кнопка вывода информации о программе;
3.5. Исходный код
unit F_DecHex;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, math, XPMan;
type
TMain_form = class(TForm)
Button_ok: TButton;
Button_clear: TButton;
gb10: TGroupBox;
gbRes: TGroupBox;
m10: TMemo;
mRes: TMemo;
Button1: TButton;
procedure Button_clearClick(Sender: TObject);
procedure Button_okClick(Sender: TObject);
procedure memo_chisloKeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Main_form: TMain_form;
implementation
uses F_About;
{$R *.dfm}
procedure TMain_form.Button_clearClick(Sender: TObject);
var
i, i2: integer;
begin
//Очистка компонент ввода-вывода
m10.Clear;
mRes.Clear;
//Установка фокуса
m10.SetFocus;
end;
//Возводим X в степень Y
function stepen(x,y: integer): real;
var
i, p: integer;
begin
p:=x;
if y=0 then
begin
stepen:=1;
end
else
begin
for i:=1 to y-1 do
begin
p:=p*x;
end;
stepen:=p;
end;
if y<0 then
begin
for i:=1 to abs(y+1) do
begin
p:=p*x;
end;
stepen:=1/p;
end;
end;
function Good_write (x: real): string;
begin
if x<10 then good_write:=FloatToStr(x);
if x=10 then Good_write:='a';
if x=11 then Good_write:='b';
if x=12 then Good_write:='c';
if x=13 then Good_write:='d';
if x=14 then Good_write:='e';
if x=15 then Good_write:='f';
if x=16 then Good_write:='g';
if x=17 then Good_write:='h';
if x=18 then Good_write:='i';
if x=19 then Good_write:='j';
if x=20 then Good_write:='k';
if x=21 then Good_write:='l';
if x=22 then Good_write:='m';
if x=23 then Good_write:='n';
if x=24 then Good_write:='o';
if x=25 then Good_write:='p';
if x=26 then Good_write:='q';
if x=27 then Good_write:='r';
if x=28 then Good_write:='s';
if x=29 then Good_write:='t';
if x=30 then Good_write:='u';
if x=31 then Good_write:='v';
if x=32 then Good_write:='w';
if x=33 then Good_write:='x';
if x=34 then Good_write:='y';
if x=35 then Good_write:='z';
end;
//Перевод из 10-ричной СС
function IN_ALL_IZ_10(chislo: string; IN_SS: integer): string;
var
a_for_integer: array[1..10000,1..4] of Int64;
i, i2, k, j, z: integer;
do_zap, temp: string;
begin
//Начальные значения
k:=0;
chislo:=trim(lowercase(chislo));
do_zap:='';
k:=0;
//Обработаем данные до запятой
a_for_integer[1,1]:=StrToInt64(chislo);
//Вычислим целую часть
j:=1;
while a_for_integer[j,1]<>0 do
begin
a_for_integer[j,2]:=a_for_integer[j,1] div IN_SS;
a_for_integer[j,3]:=a_for_integer[j,1] mod IN_SS;
a_for_integer[j+1,1]:=a_for_integer[j,2];
j:=j+1;
end;
for i2:=j-1 downto 1 do do_zap:=do_zap+good_write(a_for_integer[i2,3]);
IN_All_IZ_10:=(do_zap);
end;
procedure TMain_form.Button_okClick(Sender: TObject);
var
lstNumber : TStringList;
i, n, k, iLength: integer;
sNumber, sText : string;
begin
//Очистка поля результатов
lstNumber:=TStringList.Create;
lstNumber.Clear;
mRes.ReadOnly:=false;
mRes.Clear;
sText:=m10.Text;
//Формирование списка чисел (различные варианты "изъятия")
n:=1;
k:=1;
iLength:=length(sText);
while k<=iLength do
begin
if (sText[k]=',') or (sText[k]=#13) then
begin
lstNumber.Add(trim(copy(sText,n,k-n)));
n:=k+1;
end
else
if k=iLength then
lstNumber.Add(trim(copy(sText,n,k-n+1)));
inc(k);
end;
//Перевод чисел (вывод списка)
for i:=0 to lstNumber.Count-1 do
begin
mRes.Lines.Add(UpperCase(in_ALL_IZ_10(lstNumber[i],16)));
end;
mRes.ReadOnly:=true;
end;
procedure TMain_form.memo_chisloKeyPress(Sender: TObject; var Key: Char);
begin
//Отсечём знаки препинания и прочее
if (key>=' ') and (key<='+') and (key>='-') and (key<='/') then key:=#0;
if (key>=':') and (key<='@') then key:=#0;
if (key>='[') and (key<='''') then key:=#0;
if (key>='{') and (key<='~') then key:=#0;
//Отсечем русский алфавит
if ((key>='А') and (key<='я')) or ((key>='A') and (key<='z')) then key:=#0;
end;
procedure TMain_form.Button1Click(Sender: TObject);
begin
//Создание и открытие формы
fmAbout:=TfmAbout.Create(self);
fmAbout.ShowModal;
fmAbout.Free;
end;
end.