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

📄 main.pas

📁 本程序是一个简易的计算器源代码。具有一般计算器的所有功能。
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit main;

interface

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

type
  TCalculator_Form = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    Button18: TButton;
    Button19: TButton;
    Button20: TButton;
    Button21: TButton;
    Button22: TButton;
    Button23: TButton;
    Button24: TButton;
    Button25: TButton;
    Button26: TButton;
    Button27: TButton;
    Button28: TButton;
    Button29: TButton;
    Button30: TButton;
    Button31: TButton;
    Button32: TButton;
    Button33: TButton;
    Button34: TButton;
    Button35: TButton;
    Button36: TButton;
    Button37: TButton;
    Button38: TButton;
    Button39: TButton;
    Button40: TButton;
    Button41: TButton;
    Button42: TButton;
    Button43: TButton;
    Button44: TButton;
    Button45: TButton;
    Button46: TButton;
    Button47: TButton;
    Button48: TButton;
    Button49: TButton;
    Button50: TButton;
    Button51: TButton;
    Button52: TButton;
    Button53: TButton;
    Button54: TButton;
    Button55: TButton;
    Button56: TButton;
    Button57: TButton;
    Button58: TButton;
    N13: TMenuItem;
    Button59: TButton;
    Button60: TButton;
    N14: TMenuItem;
    N15: TMenuItem;
    N16: TMenuItem;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    RadioButton5: TRadioButton;
    RadioButton6: TRadioButton;
    procedure N5Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button22Click(Sender: TObject);
    procedure Button24Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button59Click(Sender: TObject);
    procedure Button53Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button19Click(Sender: TObject);
    procedure Button25Click(Sender: TObject);
    procedure Button26Click(Sender: TObject);
    procedure Button23Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button54Click(Sender: TObject);
    procedure Button56Click(Sender: TObject);
    procedure Button55Click(Sender: TObject);
    procedure Button57Click(Sender: TObject);
    procedure Button60Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure RadioButton4Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure N11Click(Sender: TObject);
    procedure N12Click(Sender: TObject);
    procedure N13Click(Sender: TObject);
    procedure RadioButton5Click(Sender: TObject);
    procedure RadioButton6Click(Sender: TObject);
    procedure N15Click(Sender: TObject);
    procedure N16Click(Sender: TObject);
    procedure Button41Click(Sender: TObject);
    procedure Button42Click(Sender: TObject);
    procedure Button43Click(Sender: TObject);
    procedure Button45Click(Sender: TObject);
    procedure Button48Click(Sender: TObject);
    procedure Button47Click(Sender: TObject);
    procedure Button52Click(Sender: TObject);
    procedure Button51Click(Sender: TObject);
    procedure Button50Click(Sender: TObject);
    procedure Button58Click(Sender: TObject);
    procedure Button27Click(Sender: TObject);
    procedure Button21Click(Sender: TObject);
    procedure Button46Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button28Click(Sender: TObject);
    procedure Button29Click(Sender: TObject);
    procedure Button30Click(Sender: TObject);
    procedure Button31Click(Sender: TObject);
    procedure Button32Click(Sender: TObject);
    procedure Button33Click(Sender: TObject);
    procedure Button34Click(Sender: TObject);
    procedure Button38Click(Sender: TObject);
    procedure Button36Click(Sender: TObject);
    procedure Button35Click(Sender: TObject);
    procedure Button37Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure StardardShow();
    procedure ScienticShow();
    procedure StardardToScientic();
    procedure ScienticToStardard();
    procedure CheckAlgorism();
    procedure CheckBinary();
    procedure CheckOctavo();
    procedure CheckHex();
  end;

var
  Calculator_Form: TCalculator_Form;
  start_flag,float_flag,n1_flag,mem_flag:boolean;
  num1,num2,num3,buff:real;
  sign,haob:integer;
  mem:real;  //内部存储
  stat_mem:array[1..100] of real;  //统计存储
  stat_count:integer;              //统计数个数
implementation
  uses stat;
{$R *.dfm}

procedure TCalculator_Form.N5Click(Sender: TObject);
begin
    Close;  //退出本程序
end;
function StrToNum(Str:string; s:integer):real;
var
  i,j,k,dec:integer;
  c,sign:char;
  sum:real;
begin
  j:=strlen(pchar(str));
  sign:='*';
  sum:=0;
  for i:=1 to j  do
  begin
    c:=str[i];
    if c='0' then
       k:=0
    else if c='1' then
      k:=1
    else if c='2' then
      k:=2
    else if c='3' then
      k:=3
    else if c='4' then
      k:=4
    else if c='5' then
      k:=5
    else if c='6' then
      k:=6
    else if c='7' then
      k:=7
    else if c='8' then
      k:=8
    else if c='9' then
      k:=9
    else if c='A' then
      k:=10
    else if c='B' then
      k:=11
    else if c='C' then
      k:=12
    else if c='D' then
      k:=13
    else if c='E' then
      k:=14
    else if c='F' then
      k:=15
    else
    begin
      sign:='/';
      dec:=1;
      k:=0;
    end;
    if sign='*' then
        sum:=sum*s+k
    else
    begin
        sum:=sum+k / dec;
        dec:=dec*S;
    end;
  end;
  StrToNum:=sum;
end;
function Numtoch(x:real):char;
begin
    if x=0 then
      numtoch:='0'
    else if x=1 then
      numtoch:='1'
    else if x=2 then
      numtoch:='2'
    else if x=3 then
      numtoch:='3'
    else if x=4 then
      numtoch:='4'
    else if x=5 then
      numtoch:='5'
    else if x=6 then
      numtoch:='6'
    else if x=7 then
      numtoch:='7'
    else if x=8 then
      numtoch:='8'
    else if x=9 then
      numtoch:='9'
    else if x=10 then
      numtoch:='A'
    else if x=11 then
      numtoch:='B'
    else if x=12 then
      numtoch:='C'
    else if x=13 then
      numtoch:='D'
    else if x=14 then
      numtoch:='E'
    else
      numtoch:='F';
end;
function NumTostr(x:real;haob:real):string;
var
  s1,s:array[1..40] of char;
  s2:pchar;
  s3:string;
  c:char;
  i,j:integer;
  x1,x2,k:real;
begin
  x1:=int(x);
  i:=1;
  while x1>=haob do
  begin
    k:=x1 - int(x1 / haob)*haob;
    c:=numtoch(k);
    s1[i]:=c;
    i:=i+1;
    x1:=int(x1 / haob);
  end;
  s1[i]:=numtoch(x1);
  for j:=1 to i do
    s[j]:=s1[i+1-j];
  i:=i+1;
  x2:=x-int(x);
  if x2<>0 then
  begin
    s[i]:='.';
    i:=i+1;
    x2:=x2*haob;
    j:=1;
    while (x2<>0) and (j<8) do
    begin
      k:=int(x2);
      s[i]:=numtoch(k);
      i:=i+1;
      x2:=(x2-k)*haob;
      j:=j+1;
    end;
  end;
  i:=i-1;
  getmem(s2,i);
  s3:=s;
  freemem(s2);
  numtostr:=s3;
end;

procedure TCalculator_Form.StardardShow();
var
  height,width:Integer;
  left,top:Integer;
begin
  Calculator_Form.Height:=250; //标准型计算器的高度
  Calculator_Form.Width:=280;  //标准型计算器的宽度
  Edit1.Top:=10;               //数字输入框的位置
  Edit1.left:=30;
  Edit1.Width:=220;
  GroupBox1.Visible:=False;  //屏蔽数制选择
  GroupBox2.Visible:=false;
  RadioButton1.Visible:=False;
  RadioButton2.Visible:=False;
  RadioButton3.Visible:=False;
  RadioButton4.Visible:=False;
  RadioButton5.Visible:=false;
  RadioButton6.Visible:=false;
  height:=32;
  width:=40;
  top:=40;
  left:=20;
  Button1.Top:=top;             //定义计算器各按键的位置
  Button1.left:=left;
  Button2.Top:=top;
  Button2.left:=left+80;
  Button3.Top:=top;
  Button3.left:=left+80*2;
  //第一列按键
  Button54.Top:=top+height;
  Button54.left:=left;
  Button55.Top:=top+height*2;
  Button55.left:=left;
  Button56.Top:=top+height*3;
  Button56.left:=left;
  Button57.Top:=top+height*4;
  Button57.left:=left;
  //第二列按键
  Button4.Top:=top+height;
  Button4.left:=left+width;
  Button10.Top:=top+height*2;
  Button10.left:=left+width;
  Button16.Top:=top+height*3;
  Button16.left:=left+width;
  Button22.Top:=top+height*4;
  Button22.left:=left+width;
  //第三列按键
  Button5.Top:=top+height;
  Button5.left:=left+width*2;
  Button11.Top:=top+height*2;
  Button11.left:=left+width*2;
  Button17.Top:=top+height*3;
  Button17.left:=left+width*2;
  Button23.Top:=top+height*4;
  Button23.left:=left+width*2;
  //第四列按键
  Button6.Top:=top+height;
  Button6.left:=left+width*3;
  Button12.Top:=top+height*2;
  Button12.left:=left+width*3;
  Button18.Top:=top+height*3;
  Button18.left:=left+width*3;
  Button24.Top:=top+height*4;
  Button24.left:=left+width*3;
  //第五列按键
  Button7.Top:=top+height;
  Button7.left:=left+width*4;
  Button13.Top:=top+height*2;
  Button13.left:=left+width*4;
  Button19.Top:=top+height*3;
  Button19.left:=left+width*4;
  Button25.Top:=top+height*4;
  Button25.left:=left+width*4;
  //第六列按键
  Button59.Top:=top+height;
  Button59.left:=left+width*5;
  Button59.Visible:=true;
  Button60.Top:=top+height*2;
  Button60.left:=left+width*5;
  Button60.Visible:=true;
  Button53.Top:=top+height*3;
  Button53.left:=left+width*5;
  Button26.Top:=top+height*4;
  Button26.left:=left+width*5;
  //屏蔽其他没用按钮
  Button8.Visible:=False;
  Button9.Visible:=False;
  Button15.Visible:=False;
  Button14.Visible:=False;  
  Button20.Visible:=False;
  Button21.Visible:=False;
  Button27.Visible:=False;
  Button28.Visible:=False;
  Button29.Visible:=False;
  Button30.Visible:=False;
  Button31.Visible:=False;
  Button32.Visible:=False;
  Button33.Visible:=False;
  Button34.Visible:=False;
  Button35.Visible:=False;
  Button36.Visible:=False;
  Button37.Visible:=False;
  Button38.Visible:=False;
  Button39.Visible:=False;
  Button40.Visible:=False;
  Button41.Visible:=False;
  Button42.Visible:=False;
  Button43.Visible:=False;
  Button44.Visible:=False;
  Button45.Visible:=False;
  Button46.Visible:=False;
  Button47.Visible:=False;
  Button48.Visible:=False;
  Button49.Visible:=False;
  Button50.Visible:=False;
  Button51.Visible:=False;
  Button52.Visible:=False;
  Button58.Visible:=False;
end;
procedure TCalculator_Form.ScienticShow();
var
  height,width:Integer;
  left1,top,left2:Integer;
begin
  Calculator_Form.Height:=330; //标准型计算器的高度
  Calculator_Form.Width:=480;  //标准型计算器的宽度
  Edit1.Top:=10;               //数字输入框的位置
  Edit1.left:=130;
  Edit1.Width:=320;
  GroupBox1.Visible:=true;
  GroupBox1.Top:=32;
  GroupBox1.Left:=10;
  GroupBox1.Width:=300;
  RadioButton1.Visible:=true;
  RadioButton1.top:=16;
  RadioButton1.Left:=10;
  RadioButton2.Visible:=true;
  RadioButton2.Checked:=true;
  RadioButton2.top:=16;
  RadioButton2.Left:=85;
  N11.Checked:=true;
  RadioButton3.Visible:=true;
  RadioButton3.top:=16;
  RadioButton3.Left:=160;
  RadioButton4.Visible:=true;
  RadioButton4.top:=16;
  RadioButton4.Left:=225;
  GroupBox2.Visible:=true;
  GroupBox2.Top:=32;
  GroupBox2.left:=320;
  GroupBox2.Width:=130;
  RadioButton5.Visible:=true;
  RadioButton5.Checked:=true;
  RadioButton5.top:=16;
  RadioButton5.Left:=10;
  N15.Checked:=true;
  RadioButton6.Visible:=true;
  RadioButton6.top:=16;
  RadioButton6.Left:=70;
  height:=32;
  width:=40;
  top:=80;
  left1:=10;
  left2:=220;
  Button1.Top:=top;             //定义计算器各按键的位置
  Button1.left:=left2;
  Button2.Top:=top;
  Button2.left:=left2+80;
  Button3.Top:=top;
  Button3.left:=left2+80*2;
  //第一列按键
  Button34.Visible:=true;
  Button34.Top:=top+height;
  Button34.left:=left1;
  Button35.Visible:=true;
  Button35.Top:=top+height*2;
  Button35.left:=left1;
  Button36.Visible:=true;
  Button36.Top:=top+height*3;
  Button36.left:=left1;
  Button37.Visible:=true;
  Button37.Top:=top+height*4;
  Button37.left:=left1;
  Button38.Visible:=true;
  Button38.Top:=top+height*5;
  Button38.left:=left1;
  //第二列按键
  Button39.Visible:=true;
  Button39.Top:=top+height;
  Button39.left:=left1+width;
  Button40.Visible:=true;
  Button40.Top:=top+height*2;
  Button40.left:=left1+width;
  Button41.Visible:=true;
  Button41.Top:=top+height*3;
  Button41.left:=left1+width;
  Button42.Visible:=true;
  Button42.Top:=top+height*4;
  Button42.left:=left1+width;
  Button43.Visible:=true;
  Button43.Top:=top+height*5;
  Button43.left:=left1+width;
  //第三列按键
  Button44.Visible:=true;
  Button44.Top:=top+height;
  Button44.left:=left1+width*2;
  Button45.Visible:=true;

⌨️ 快捷键说明

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