⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 用Delphi写的计算器程序
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Buttonn5: TButton;
    Buttonn4: TButton;
    Buttonn3: TButton;
    Buttonn2: TButton;
    Buttonadd: TButton;
    Buttonn9: TButton;
    Buttonn8: TButton;
    Buttonn7: TButton;
    Buttonn6: TButton;
    Buttonaddsub: TButton;
    Buttonpoint: TButton;
    ButtonDiv: TButton;
    Buttonmul: TButton;
    Buttonsub: TButton;
    Button0: TButton;
    Buttonequal: TButton;
    Buttonc: TButton;
    Buttondelete: TButton;
    RadioButtonDec: TRadioButton;
    RadioButtonBin: TRadioButton;
    RadioButtonBa: TRadioButton;
    procedure Button1Click(Sender: TObject);
    procedure Buttonn2Click(Sender: TObject);
    procedure Buttonn3Click(Sender: TObject);
    procedure Buttonn4Click(Sender: TObject);
    procedure Buttonn5Click(Sender: TObject);
    procedure Buttonn6Click(Sender: TObject);
    procedure Buttonn7Click(Sender: TObject);
    procedure Buttonn8Click(Sender: TObject);
    procedure Buttonn9Click(Sender: TObject);
    procedure ButtonaddClick(Sender: TObject);
    procedure ButtonequalClick(Sender: TObject);
    procedure ButtonsubClick(Sender: TObject);
    procedure ButtonmulClick(Sender: TObject);
    procedure ButtonDivClick(Sender: TObject);
    procedure Button0Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ButtoncClick(Sender: TObject);
    procedure ButtonpointClick(Sender: TObject);
    function Dectobin(dec:integer):string;
    function BinToDec(bin:string):integer;
    procedure RadioButtonBinClick(Sender: TObject);
    procedure RadioButtonDecClick(Sender: TObject);
    procedure ButtondeleteClick(Sender: TObject);
    procedure ButtonaddsubClick(Sender: TObject);
    function BinToBa(bin:string):string;
    procedure RadioButtonBaClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }

end;
var
  Form1: TForm1;
  num1,num2,result:integer;
  operator:string;
  signnum:integer;
  Numflag:boolean;
  edit:integer;

implementation

{$R *.dfm}

function Tform1.Dectobin(dec:integer):string;
begin
  result:='';
  while(Dec>=2)do
    begin
     result:=IntToStr(trunc(Dec mod 2))+result;
     Dec:=Dec div 2 ;
    end;
  result :=IntToStr(Dec)+result;
end;


function  Tform1.BinToDec(bin:string):integer;
var
i:integer;
begin
 result:=0;
 for i:=1 to length(bin) do
 begin
  result:=result+round(StrToInt(copy(bin,i,1))*intpower(2,length(bin)-i));
 end;
end ;


function  Tform1.BinToBa(bin:string):string;
var
i,a:integer;
j:integer;
begin
 j:=0;
 if(length(bin) mod 3=1) then
   begin
    bin:='00'+bin;
   end
 else if( length(bin) mod 3=2) then
   begin
    bin:='0'+bin ;
   end
 else bin:=bin ;
 result:='';
 a:=0;
 while(3*j+3<=length(bin)) do
 begin
   a:=0;
  for i:=0 to 2 do
   begin
   a:=a+round(StrToInt(copy(bin,length(bin)-3*j-i,1))*intpower(2,i));
   end;
   result:=inttostr(a)+result;
   j:=j+1;
 end;
end ;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if(numflag=false) then
  edit1.text:=edit1.Text+'1'
  else
  begin
  edit1.Text:='1' ;
  numflag:=false;
  end ;


end;

procedure TForm1.Buttonn2Click(Sender: TObject);
begin
 if(numflag=false) then
  edit1.text:=edit1.Text+'2'
 else
  begin
  edit1.Text:='2' ;
  numflag:=false;
  end ;

end;

procedure TForm1.Buttonn3Click(Sender: TObject);
begin
if(numflag=false) then
  edit1.text:=edit1.Text+'3'
 else
  begin
  edit1.Text:='3' ;
  numflag:=false;
  end ;
end;

procedure TForm1.Buttonn4Click(Sender: TObject);
begin
if(numflag=false) then
  edit1.text:=edit1.Text+'4'
 else
  begin
  edit1.Text:='4' ;
  numflag:=false;
  end ;
end;

procedure TForm1.Buttonn5Click(Sender: TObject);
begin
if(numflag=false) then
  edit1.text:=edit1.Text+'5'
 else
  begin
  edit1.Text:='5' ;
  numflag:=false;
  end ;
end;

procedure TForm1.Buttonn6Click(Sender: TObject);
begin
if(numflag=false) then
  edit1.text:=edit1.Text+'6'
 else
  begin
  edit1.Text:='6' ;
  numflag:=false;
  end ;
end;

procedure TForm1.Buttonn7Click(Sender: TObject);
begin
if(numflag=false) then
  edit1.text:=edit1.Text+'7'
 else
  begin
  edit1.Text:='7' ;
  numflag:=false;
  end ;
end;

procedure TForm1.Buttonn8Click(Sender: TObject);
begin
if(numflag=false) then
  edit1.text:=edit1.Text+'8'
 else
  begin
  edit1.Text:='8' ;
  numflag:=false;
  end ;
end;

procedure TForm1.Buttonn9Click(Sender: TObject);
begin
if(numflag=false) then
  edit1.text:=edit1.Text+'9'
 else
  begin
  edit1.Text:='9' ;
  numflag:=false;
  end ;
end;

procedure TForm1.ButtonaddClick(Sender: TObject);
begin
  signnum:=signnum+1;
  if(signnum=1) then
  begin
   if(RadioButtonDec.checked=true)then
   num1:=strtoint(edit1.text)
   else
   num1:=BintoDec(edit1.text);
   operator:='+';
   edit1.text:='';
  end
  else
   begin
     if(RadioButtonDec.checked=true)then
       num2:=strtoint(edit1.text)
     else
       num2:=BintoDec(edit1.text);
     if(operator='+') then
       result:=num1+num2
     else if(operator='-') then
       result:=num1-num2
     else if(operator='*') then
       result:=num1*num2
     else if(operator='/') then
        result:=num1 div num2 ;
     if(RadioButtonDec.checked=true)then
         edit1.text:=inttostr(result)
     else
         edit1.text:=dectobin((result));
      num1:=result;
      operator:='+';
      numflag:=true;
   end ;

end;

procedure TForm1.ButtonequalClick(Sender: TObject);
begin
  if(RadioButtonDec.checked=true)then
       num2:=strtoint(edit1.text)
  else
       num2:=BintoDec(edit1.text);
  if(operator='+') then
       result:=num1+num2
  else if(operator='-') then
       result:=num1-num2
  else if(operator='*') then
       result:=num1*num2
  else if(operator='/') then
        result:=num1 div num2 ;

   if(RadioButtonDec.checked=true)then
         edit1.text:=inttostr(result)
   else
        edit1.text:=dectobin((result));
    numflag:=true;

end;

procedure TForm1.ButtonsubClick(Sender: TObject);
begin
 signnum:=signnum+1;
  if(signnum=1) then
  begin
   num1:=strtoint(edit1.text);
   operator:='-';
   edit1.text:='';
  end
  else
   begin
      num2:=strtoint(edit1.text);
     if(operator='+') then
       result:=num1+num2
  else if(operator='-') then
       result:=num1-num2
  else if(operator='*') then
       result:=num1*num2
  else if(operator='/') then
        result:=num1 div num2 ;
    edit1.text:=inttostr(result);
    num1:=result;
    operator:='-';
    numflag:=true;
   end ;

end;

procedure TForm1.ButtonmulClick(Sender: TObject);
begin
    signnum:=signnum+1;
  if(signnum=1) then
  begin
   num1:=strtoint(edit1.text);
   operator:='*';
   edit1.text:='';
  end
  else
   begin
      num2:=strtoint(edit1.text);
     if(operator='+') then
       result:=num1+num2
  else if(operator='-') then
       result:=num1-num2
  else if(operator='*') then
       result:=num1*num2
  else if(operator='/') then
        result:=num1 div num2 ;
    edit1.text:=inttostr(result);
    num1:=result;
    operator:='*';
    numflag:=true;
   end ;

end;

procedure TForm1.ButtonDivClick(Sender: TObject);
begin
 signnum:=signnum+1;
  if(signnum=1) then
  begin
   num1:=strtoint(edit1.text);
   operator:='/';
   edit1.text:='';
  end
  else
   begin
      num2:=strtoint(edit1.text);
     if(operator='+') then
       result:=num1+num2
  else if(operator='-') then
       result:=num1-num2
  else if(operator='*') then
       result:=num1*num2
  else if(operator='/') then
        result:=num1 div num2 ;
    edit1.text:=inttostr(result);
    num1:=result;
    operator:='/';
    numflag:=true;
   end ;

end;

procedure TForm1.Button0Click(Sender: TObject);
begin
if(numflag=false) then
  edit1.text:=edit1.Text+'0'
 else
  begin
  edit1.Text:='0' ;
  numflag:=false;
  end ;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
signnum:=0;
numflag:=false;
end;

procedure TForm1.ButtoncClick(Sender: TObject);
begin
edit1.text:='0';
numflag:=true;
signnum:=0;
end;

procedure TForm1.ButtonpointClick(Sender: TObject);
begin
 if(pos('.',edit1.Text)>0) then
       edit1.Text:=edit1.Text
 else edit1.Text:=edit1.Text+'.';
end;

procedure TForm1.RadioButtonBinClick(Sender: TObject);
begin
buttonn2.enabled:=false;
buttonn3.enabled:=false;
buttonn4.enabled:=false;
buttonn5.enabled:=false;
buttonn6.enabled:=false;
buttonn7.enabled:=false;
buttonn8.enabled:=false;
buttonn9.enabled:=false;
buttonpoint.enabled:=false;
 //
 edit1.Text:=Dectobin(strtoint(edit1.Text));
end;

procedure TForm1.RadioButtonDecClick(Sender: TObject);
begin
buttonn2.enabled:=true;
buttonn3.enabled:=true;
buttonn4.enabled:=true;
buttonn5.enabled:=true;
buttonn6.enabled:=true;
buttonn7.enabled:=true;
buttonn8.enabled:=true;
buttonn9.enabled:=true;
buttonpoint.enabled:=true;
 //
 edit1.Text:=InttoStr(BinToDec(edit1.Text));
end;

procedure TForm1.ButtondeleteClick(Sender: TObject);
begin
 edit1.Text:=copy(edit1.Text,1,length(edit1.Text)-1);

end;

procedure TForm1.ButtonaddsubClick(Sender: TObject);
begin
    if(strtoint(edit1.text)>0) then
       edit:= strtoint(edit1.Text)*-1
    else edit:= strtoint(edit1.Text)*-1;
    edit1.Text:=inttostr(edit);
end;



procedure TForm1.RadioButtonBaClick(Sender: TObject);
begin
buttonn2.enabled:=true;
buttonn3.enabled:=true;
buttonn4.enabled:=true;
buttonn5.enabled:=true;
buttonn6.enabled:=true;
buttonn7.enabled:=true;
buttonn8.enabled:=true;
buttonn9.enabled:=true;
buttonpoint.enabled:=true;
edit1.Text:= bintoba(edit1.Text)
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -