將就看吧:)
unit convert;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const
base = 33;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
digit: Integer;
num: integer;
temp:integer;//real?
k:integer;
begin
val(edit1.Text,temp,k);
if (not(sametext(intToStr(temp),edit1.Text))) then k := -1;
if k <> 0 then
begin
MessageDlg('input or click error!',mtWarning,[mbOK],0);
//edit1.Text:=intToStr(0);
edit1.SetFocus;
end
else
begin
num:= strToInt(edit1.Text);
s:= '';
repeat
digit:= num mod base;
if digit < 10 then
Insert (CHR (digit + 48), s, 1)
else Insert (CHR (digit + 55), s, 1);
num:= num div base;
until num = 0;
edit2.Text:=s;
end; //end of else begin(end of if)
end;//end of procedure TForm1.Button1Click(Sender: TObject)
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
s: string;
c: char;
digit,i: integer;
rev,j: extended;
begin
s:= edit1.Text;
j:= 0;
rev:=0;
digit:=0;
for i:=length(s) downto 1 do
begin
c:= Upcase (s[i]);
case c of
'0'..'9': digit:= ORD(c) - 48;
'A'..'W': digit:= ORD(c) - 55;
else
begin
MessageDlg('number not in!',mtError,[mbOK],0);
rev:=0;
digit:=0;
break;
end;
end; //end of case
rev:= rev + digit*power(base,j);
j:=j+1;
end;// end of begin in 'for' statement
edit2.text:=intToStr(round(rev));
end;//end of procedure TForm1.Button3Click(Sender: TObject)
procedure TForm1.Edit1Change(Sender: TObject);
begin
edit2.Text:='';
end;
end.