You are on page 1of 15

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

GroupBox1: TGroupBox;

RIB: TRadioButton;

RIO: TRadioButton;

RID: TRadioButton;

RIH: TRadioButton;

GroupBox2: TGroupBox;

ROB: TRadioButton;

ROO: TRadioButton;

ROD: TRadioButton;

ROH: TRadioButton;

Edit1: TEdit;

Edit2: TEdit;

Button1: TButton;

procedure ROBClick(Sender: TObject);

procedure ROOClick(Sender: TObject);

procedure RODClick(Sender: TObject);

procedure ROHClick(Sender: TObject);


procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ROBClick(Sender: TObject);

VAR

D, SB, HB, P, I : INTEGER;

D2, B, O, O2, H, H2 : STRING;

begin

IF (RIB.Checked = TRUE) AND (ROB.Checked = TRUE) THEN

BEGIN

EDIT2.Text := EDIT1.Text;

END;

IF (RIO.Checked = TRUE) AND (ROB.Checked = TRUE) THEN

BEGIN

O := EDIT1.Text;
O2 := '';

FOR I := LENGTH(O) DOWNTO 1 DO

BEGIN

O2 := O2 + O[I];

END;

P := 1;

D := 0;

FOR I := 1 TO LENGTH(O2) DO

BEGIN

P := P * 8;

D := D + TRUNC(STRTOINT(O2[I]) * P / 8);

END;

REPEAT

SB := D MOD 2;

HB := D DIV 2;

D := HB;

B := INTTOSTR(SB) + B;

UNTIL HB = 0;

EDIT2.Text := B;

END;

IF (RID.Checked = TRUE) AND (ROB.Checked = TRUE) THEN

BEGIN

D := STRTOINT (EDIT1.Text);

D2 := '';

WHILE D >= 1 DO

BEGIN
SB := D DIV 2;

HB := D MOD 2;

D2 := D2 + INTTOSTR (HB);

D := SB;

END;

B := '';

FOR P := LENGTH(D2) DOWNTO 1 DO

B := B + D2[P];

EDIT2.Text := B;

END;

IF (RIH.Checked = TRUE) AND (ROB.Checked = TRUE) THEN

BEGIN

H := EDIT1.Text;

H2 := '';

FOR I := LENGTH(H) DOWNTO 1 DO

BEGIN

H2 := H2 + H[I];

END;

P := 1;

D := 0;

FOR I := 1 TO LENGTH(H2) DO

BEGIN

P := P * 16;

IF H2[I] = 'A' THEN D := D + TRUNC(10 * P / 16)

ELSE IF H2[I] = 'B' THEN D := D + TRUNC(11 * P / 16)

ELSE IF H2[I] = 'C' THEN D := D + TRUNC(12 * P / 16)


ELSE IF H2[I] = 'D' THEN D := D + TRUNC(13 * P / 16)

ELSE IF H2[I] = 'E' THEN D := D + TRUNC(14 * P / 16)

ELSE IF H2[I] = 'F' THEN D := D + TRUNC(15 * P / 16)

ELSE IF STRTOINT(H2[I]) <= 9 THEN D := D + TRUNC(STRTOINT (H2[I]) * P / 16);

END;

REPEAT

SB := D MOD 2;

HB := D DIV 2;

D := HB;

B := INTTOSTR(SB) + B;

UNTIL HB = 0;

EDIT2.Text := B;

END;

end;

procedure TForm1.ROOClick(Sender: TObject);

VAR

D, SB, HB, P, I, DUA : INTEGER;

D2, O, B, B2, H, H2 : STRING;

begin

IF (RIB.Checked = TRUE) AND (ROO.Checked = TRUE) THEN

BEGIN

B := EDIT1.Text;

B2 := '';

FOR I := LENGTH(B) DOWNTO 1 DO

BEGIN
B2 := B2 + B[I];

END;

DUA := 1;

D := 0;

FOR I := 1 TO LENGTH(B2) DO

BEGIN

DUA := DUA * 2;

D := D + TRUNC(STRTOINT(B2[I]) * DUA / 2);

END;

REPEAT

SB := D MOD 8;

HB := D DIV 8;

D := HB;

O := INTTOSTR(SB) + O;

UNTIL HB = 0;

EDIT2.Text := O;

END;

IF (RIO.Checked = TRUE) AND (ROO.Checked = TRUE) THEN

BEGIN

EDIT2.Text := EDIT1.Text;

END;

IF (RID.Checked = TRUE) AND (ROO.Checked = TRUE) THEN

BEGIN

D := STRTOINT (EDIT1.Text);

D2 := '';
WHILE D >= 1 DO

BEGIN

SB := D DIV 8;

HB := D MOD 8;

D2 := D2 + INTTOSTR (HB);

D := SB;

END;

O := '';

FOR P := LENGTH(D2) DOWNTO 1 DO

O := O + D2[P];

EDIT2.Text := O;

END;

IF (RIH.Checked = TRUE) AND (ROO.Checked = TRUE) THEN

BEGIN

H := EDIT1.Text;

H2 := '';

FOR I := LENGTH(H) DOWNTO 1 DO

BEGIN

H2 := H2 + H[I];

END;

P := 1;

D := 0;

FOR I := 1 TO LENGTH(H2) DO

BEGIN

P := P * 16;

IF H2[I] = 'A' THEN D := D + TRUNC(10 * P / 16)


ELSE IF H2[I] = 'B' THEN D := D + TRUNC(11 * P /16)

ELSE IF H2[I] = 'C' THEN D := D + TRUNC(12 * P /16)

ELSE IF H2[I] = 'D' THEN D := D + TRUNC(13 * P /16)

ELSE IF H2[I] = 'E' THEN D := D + TRUNC(14 * P /16)

ELSE IF H2[I] = 'F' THEN D := D + TRUNC(15 * P /16)

ELSE IF STRTOINT(H2[I]) <= 9 THEN D := D + TRUNC(STRTOINT(H2[I]) * P / 16);

END;

REPEAT

SB := D MOD 8;

HB := D DIV 8;

D := HB;

O := INTTOSTR(SB) + O;

UNTIL HB = 0;

EDIT2.Text := O;

END;

end;

procedure TForm1.RODClick(Sender: TObject);

VAR

I, SB, HB, T, J, E, F, G, L, P : INTEGER;

B, B2, O, O2, K, H, H2 : STRING;

D : REAL;

begin

IF (RIB.Checked = TRUE) AND (ROD.Checked = TRUE) THEN

BEGIN

B := EDIT1.Text;
B2 := '';

FOR I := LENGTH(B) DOWNTO 1 DO

BEGIN

B2 := B2 + B[I];

END;

SB := STRTOINT (B2[1]);

HB := SB*1;

T := HB;

FOR J := 2 TO LENGTH(B2) DO

BEGIN

E := STRTOINT (B2[J]);

F := 1;

G := 1;

REPEAT

F := F * 2;

G := G + 1;

UNTIL G = J;

L := E * F;

T := T + L;

END;

K := INTTOSTR (T);

EDIT2.Text := K;

END;

IF (RIO.Checked = TRUE) AND (ROD.Checked = TRUE) THEN

BEGIN

O := EDIT1.Text;
O2 := '';

FOR I := LENGTH(O) DOWNTO 1 DO

BEGIN

O2 := O2 + O[I];

END;

P := 1;

D := 0;

FOR I := 1 TO LENGTH(O2) DO

BEGIN

P := P * 8;

D := D + STRTOINT(O2[I]) * P / 8;

END;

EDIT2.Text := FLOATTOSTR (D);

END;

IF (RID.Checked = TRUE) AND (ROD.Checked = TRUE) THEN

BEGIN

EDIT2.Text := EDIT1.Text;

END;

IF (RIH.Checked = TRUE) AND (ROD.Checked = TRUE) THEN

BEGIN

H := EDIT1.Text;

H2 := '';

FOR I := LENGTH(H) DOWNTO 1 DO

BEGIN

H2 := H2 + H[I];
END;

P := 1;

D := 0;

FOR I := 1 TO LENGTH(H2) DO

BEGIN

P := P * 16;

IF H2[I] = 'A' THEN D := D + 10 * P / 16

ELSE IF H2[I] = 'B' THEN D := D + 11 * P / 16

ELSE IF H2[I] = 'C' THEN D := D + 12 * P / 16

ELSE IF H2[I] = 'D' THEN D := D + 13 * P / 16

ELSE IF H2[I] = 'E' THEN D := D + 14 * P / 16

ELSE IF H2[I] = 'F' THEN D := D + 15 * P / 16

ELSE IF STRTOINT (H2[I]) <= 9 THEN D := D + STRTOINT(H2[I]) * P / 16;

END;

EDIT2.Text := FLOATTOSTR(D);

END;

end;

procedure TForm1.ROHClick(Sender: TObject);

VAR

D, SB, HB, P, I, DUA : INTEGER;

D2, H, Z, B, B2, O, O2 : STRING;

begin

IF (RIB.Checked = TRUE) AND (ROH.Checked = TRUE) THEN

BEGIN

B := EDIT1.Text;
B2 := '';

FOR I := LENGTH(B) DOWNTO 1 DO

BEGIN

B2 := B2 + B[I];

END;

DUA := 1;

D := 0;

FOR I := 1 TO LENGTH(B2) DO

BEGIN

DUA := DUA * 2;

D := D + TRUNC(STRTOINT(B2[I]) * DUA / 2);

END;

Z := '0123456789ABCDEF';

H := '';

REPEAT

SB := D MOD 16;

HB := D DIV 16;

D := HB;

H := Z[SB+1] + H;

UNTIL HB <= 0;

EDIT2.Text := H;

END;

IF (RIO.Checked = TRUE) AND (ROH.Checked = TRUE) THEN

BEGIN

O := EDIT1.Text;

O2 := '';
FOR I := LENGTH(O) DOWNTO 1 DO

BEGIN

O2 := O2 + O[I];

END;

P := 1;

D := 0;

FOR I := 1 TO LENGTH(O2) DO

BEGIN

P := P * 8;

D := D + TRUNC(STRTOINT(O2[I]) * P / 8);

END;

Z := '0123456789ABCDEF';

REPEAT

SB := D MOD 16;

HB := D DIV 16;

D := HB;

H := Z [SB+1] + H;

UNTIL HB = 0;

EDIT2.Text := H;

END;

IF (RID.Checked = TRUE) AND (ROH.Checked = TRUE) THEN

BEGIN

D := STRTOINT (EDIT1.Text);

Z := '0123456789ABCDEF';

D2 := '';

WHILE D >= 1 DO
BEGIN

SB := D DIV 16;

HB := D MOD 16;

D2 := D2 + Z[HB+1];

D := SB;

END;

H := '';

FOR P := LENGTH(D2) DOWNTO 1 DO

H := H + D2[P];

EDIT2.Text := H;

END;

IF (RIH.Checked = TRUE) AND (ROH.Checked = TRUE) THEN

BEGIN

EDIT2.Text := EDIT1.Text;

END;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

EDIT1.Text := '';

EDIT2.Text := '';

RIB.Checked := FALSE;

RIO.Checked := FALSE;

RID.Checked := FALSE;

RIH.Checked := FALSE;
ROB.Checked := FALSE;

ROO.Checked := FALSE;

ROD.Checked := FALSE;

ROH.Checked := FALSE;

end;

end.

You might also like