unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; Button2: TButton; Edit2: TEdit; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Edit2Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure eingabefehler; begin showmessage('Eingabefehler'); abort; end; procedure checkmulti(multi:integer); begin if multi > strtoint(form1.edit2.text)-1 then eingabefehler; end; function getmulti(input:string; i:integer):integer; var tmp:integer; begin tmp:=length(input)-i; if (ord(input[tmp]) >= 65) and (ord(input[tmp]) <= 90) then result := ord(input[tmp]) - 55 else result := strtoint(input[tmp]); end; function getoutput(tmp:integer):string; begin if tmp > 9 then result := chr(tmp+55) else result:= inttostr(tmp)[1]; end; procedure TForm1.Button1Click(Sender: TObject); var output:string; input,numbersystem,tmp:integer; begin try input:=strtoint(edit1.Text); output:=''; numbersystem:=strtoint(edit2.text); repeat tmp:=input mod numbersystem; input:=input div numbersystem; output:=getoutput(tmp)+output; until input=0; label1.caption:=output; except on EConvertError do eingabefehler; end; end; procedure TForm1.Button2Click(Sender: TObject); var input:string; i,multi,numbersystem:integer; output:extended; begin try input:=edit1.text; output:=0; numbersystem:=strtoint(edit2.text); for i := 0 to length(input)-1 do begin multi:=getmulti(input,i); checkmulti(multi); output := output + (multi * power(numbersystem,i)); end; label1.caption:=floattostr(output); except on EConvertError do eingabefehler; end; end; procedure TForm1.Edit2Change(Sender: TObject); begin if strtoint(edit2.Text) > 32 then edit2.Text:='32'; end; end.