unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TForm1 = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; Panel1: TPanel; GroupBox1: TGroupBox; Edit1: TEdit; Edit2: TEdit; Button1: TButton; Label4: TLabel; RadioGroup1: TRadioGroup; GroupBox2: TGroupBox; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var abbruch:Integer; eingabe:Integer; ergebnis:Integer; rest:Integer; hexzahl:string; zielzahl:string; binaerzahllaenge:Integer; i:Integer; eingabe_binaer:string; bit:char; aktuelles_bit:real; bitsumme:real; stelle:Integer; potenz:Integer; octalzahlsumme:real; bitmuster:String; vierer_bit:Integer; bitnummer:Integer; eingabe_octal:String; octalteilzahl:char; octalzahllaenge:Integer; aktuelle_octalteilzahl:real; octalzahl:String; dezimalzahl:Integer; hexsumme:real; teilzahl:char; aktuelle_teilzahl:real; eingabe_hex:string; zahllaenge:Integer; ord_zahl:Integer; begin zielzahl:=''; case RadioGroup1.ItemIndex of 0: begin eingabe:=StrToInt(Edit1.Text); ergebnis:=eingabe; repeat rest:=ergebnis mod 2; ergebnis:=ergebnis div 2; zielzahl:=IntToStr(rest)+zielzahl; until ergebnis=0; Edit2.Text:=zielzahl; end; 1: begin eingabe:=StrToInt(Edit1.Text); ergebnis:=eingabe; repeat rest:=ergebnis mod 8; ergebnis:=ergebnis div 8; zielzahl:=IntToStr(rest)+zielzahl; until ergebnis=0; Edit2.Text:=zielzahl; end; 2: begin eingabe:=StrToInt(Edit1.Text); ergebnis:=eingabe; repeat rest:=ergebnis mod 16; ergebnis:=ergebnis div 16; case rest of 0..9: begin hexzahl:=IntToStr(rest); end; 10: begin hexzahl:='A'; end; 11: begin hexzahl:='B'; end; 12: begin hexzahl:='C'; end; 13: begin hexzahl:='D'; end; 14: begin hexzahl:='E'; end; 15: begin hexzahl:='F'; end; end; zielzahl:=hexzahl+zielzahl; until ergebnis=0; Edit2.Text:=zielzahl; end; 3: begin eingabe_binaer:=(Edit1.Text); binaerzahllaenge:=length(eingabe_binaer); bitsumme:=0; for i:=1 to binaerzahllaenge do begin bit:=eingabe_binaer[i]; if bit='1' then begin aktuelles_bit:=EXP(LN(2)*(binaerzahllaenge-i)); bitsumme:=bitsumme+aktuelles_bit; end; end; Edit2.Text:=FloatToStr(bitsumme); end; 4: begin eingabe_binaer:=(Edit1.Text); binaerzahllaenge:=length(eingabe_binaer); stelle:=binaerzahllaenge; bitsumme:=0; repeat potenz:=0; octalzahlsumme:=0; repeat bit:=eingabe_binaer[stelle]; if bit='1' then begin aktuelles_bit:=EXP(LN(2)*(potenz)); octalzahlsumme:=octalzahlsumme+aktuelles_bit; end; potenz:=potenz+1; stelle:=stelle-1; until (potenz=3) or (stelle=0); zielzahl:=FloatToStr(octalzahlsumme)+zielzahl; until stelle=0; Edit2.Text:=zielzahl; end; 5: begin eingabe_binaer:=(Edit1.Text); binaerzahllaenge:=length(eingabe_binaer); stelle:=binaerzahllaenge; repeat bitmuster:=''; vierer_bit:=0; bitnummer:=0; repeat bit:=eingabe_binaer[stelle]; bitmuster:=bit+bitmuster; bitnummer:=bitnummer+1; stelle:=stelle-1; if (stelle=0) and (bitnummer<>4) then begin bitnummer:=4 end; if bitnummer=4 then begin vierer_bit:=StrToInt(bitmuster); case vierer_bit of 0: begin hexzahl:='0'; end; 1: begin hexzahl:='1'; end; 10: begin hexzahl:='2'; end; 11: begin hexzahl:='3'; end; 100: begin hexzahl:='4'; end; 101: begin hexzahl:='5'; end; 110: begin hexzahl:='6'; end; 111: begin hexzahl:='7'; end; 1000: begin hexzahl:='8'; end; 1001: begin hexzahl:='9'; end; 1010: begin hexzahl:='A'; end; 1011: begin hexzahl:='B'; end; 1100: begin hexzahl:='C'; end; 1101: begin hexzahl:='D'; end; 1110: begin hexzahl:='E'; end; 1111: begin hexzahl:='F'; end; end; end; until bitnummer=4; zielzahl:=hexzahl+zielzahl; until stelle=0; Edit2.Text:=zielzahl; end; 6: begin eingabe_octal:=(Edit1.Text); octalzahllaenge:=length(eingabe_octal); octalzahlsumme:=0; for i:=1 to octalzahllaenge do begin octalteilzahl:=eingabe_octal[i]; aktuelle_octalteilzahl:=EXP(LN(8)*(octalzahllaenge-i))*StrToInt(octalteilzahl); octalzahlsumme:=octalzahlsumme+aktuelle_octalteilzahl; end; Edit2.Text:=FloatToStr(octalzahlsumme); end; 7: begin abbruch:=0; eingabe_octal:=(Edit1.Text); octalzahllaenge:=length(eingabe_octal); for i:=octalzahllaenge DownTo 1 do begin octalteilzahl:=eingabe_octal[i]; case StrToInt(octalteilzahl) of 0: begin octalzahl:='000'; end; 1: begin octalzahl:='001'; end; 2: begin octalzahl:='010'; end; 3: begin octalzahl:='011'; end; 4: begin octalzahl:='100'; end; 5: begin octalzahl:='101'; end; 6: begin octalzahl:='110'; end; 7: begin octalzahl:='111'; end; 8: begin abbruch:=1; end; 9: begin abbruch:=1; end; end; zielzahl:=octalzahl+zielzahl; end; if abbruch=1 then begin Edit2.Text:='Verarbeitung nicht möglich'; end else begin Edit2.Text:=zielzahl; end; end; 8: begin eingabe_octal:=(Edit1.Text); octalzahllaenge:=length(eingabe_octal); octalzahlsumme:=0; for i:=1 to octalzahllaenge do begin octalteilzahl:=eingabe_octal[i]; aktuelle_octalteilzahl:=EXP(LN(8)*(octalzahllaenge-i))*StrToInt(octalteilzahl); octalzahlsumme:=octalzahlsumme+aktuelle_octalteilzahl; end; dezimalzahl:=round(octalzahlsumme); repeat rest:=dezimalzahl mod 16; dezimalzahl:=dezimalzahl div 16; case rest of 0..9: begin hexzahl:=IntToStr(rest); end; 10: begin hexzahl:='A'; end; 11: begin hexzahl:='B'; end; 12: begin hexzahl:='C'; end; 13: begin hexzahl:='D'; end; 14: begin hexzahl:='E'; end; 15: begin hexzahl:='F'; end; end; zielzahl:=hexzahl+zielzahl; until dezimalzahl=0; Edit2.Text:=zielzahl; end; 9: begin eingabe_hex:=(Edit1.Text); zahllaenge:=length(eingabe_hex); stelle:=zahllaenge; hexsumme:=0; potenz:=0; repeat teilzahl:=eingabe_hex[stelle]; ord_zahl:=Ord(teilzahl); case ord_zahl of 48: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*0; end; 49: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*1; end; 50: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*2; end; 51: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*3; end; 52: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*4; end; 53: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*5; end; 54: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*6; end; 55: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*7; end; 56: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*8; end; 57: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*9; end; 65: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*10; end; 66: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*11; end; 67: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*12; end; 68: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*13; end; 69: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*14; end; 70: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*15; end; end; hexsumme:=hexsumme+aktuelle_teilzahl; potenz:=potenz+1; stelle:=stelle-1; until stelle=0; zielzahl:=FloatToStr(hexsumme); Edit2.Text:=zielzahl; end; 10: begin eingabe_hex:=(Edit1.Text); zahllaenge:=length(eingabe_hex); stelle:=zahllaenge; hexsumme:=0; repeat teilzahl:=eingabe_hex[stelle]; ord_zahl:=Ord(teilzahl); bitmuster:=''; case ord_zahl of 48: begin bitmuster:='0000'; end; 49: begin bitmuster:='0001'; end; 50: begin bitmuster:='0010'; end; 51: begin bitmuster:='0011'; end; 52: begin bitmuster:='0100'; end; 53: begin bitmuster:='0101'; end; 54: begin bitmuster:='0110'; end; 55: begin bitmuster:='0111'; end; 56: begin bitmuster:='1000'; end; 57: begin bitmuster:='1001'; end; 65: begin bitmuster:='1010'; end; 66: begin bitmuster:='1011'; end; 67: begin bitmuster:='1100'; end; 68: begin bitmuster:='1101'; end; 69: begin bitmuster:='1110'; end; 70: begin bitmuster:='1111'; end; end; zielzahl:=bitmuster+zielzahl; stelle:=stelle-1; until stelle=0; Edit2.Text:=zielzahl; end; 11: begin eingabe_hex:=(Edit1.Text); zahllaenge:=length(eingabe_hex); stelle:=zahllaenge; hexsumme:=0; potenz:=0; repeat teilzahl:=eingabe_hex[stelle]; ord_zahl:=Ord(teilzahl); case ord_zahl of 48: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*0; end; 49: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*1; end; 50: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*2; end; 51: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*3; end; 52: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*4; end; 53: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*5; end; 54: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*6; end; 55: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*7; end; 56: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*8; end; 57: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*9; end; 65: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*10; end; 66: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*11; end; 67: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*12; end; 68: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*13; end; 69: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*14; end; 70: begin aktuelle_teilzahl:=EXP(LN(16)*(potenz))*15; end; end; hexsumme:=hexsumme+aktuelle_teilzahl; potenz:=potenz+1; stelle:=stelle-1; until stelle=0; ergebnis:=round(hexsumme); repeat rest:=ergebnis mod 8; ergebnis:=ergebnis div 8; zielzahl:=IntToStr(rest)+zielzahl; until ergebnis=0; Edit2.Text:=zielzahl; end; end; end; end.