All pastes #270879 Raw Edit

Miscellany

public text v1 · immutable
·published 2006-12-07 19:55 UTC
rendered paste body
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.