DELPHI计算器设计代码
- 格式:pdf
- 大小:75.23 KB
- 文档页数:7
Delphi代码标准文档2004年5月目录1 前言 (3)2 源程序书写规范 (3)2.1通用源代码格式规则 (3)2.2 Object Pascal语句格式语句书写规范与用法 (4)3 命名规范 (9)3.1 过程(Procedure)与函数(Function) (9)3.2 常量(Constants)和变量(Variable) (10)3.3 类型(Type) (10)3.3.1 一般类型 (10)3.3.2 构造类型 (11)3.3.3 类类型(Class) (11)3.3.4 元件类型 (13)3.3.5 窗体与对话框类型 (15)3.3.6 数据模块类型 (17)3.4 文件 (18)3.4.1 项目文件 (18)3.4.2 窗体文件 (18)3.4.3 数据模块文件 (18)3.4.4 远程数据模块文件 (19)3.4.5 单元文件 (19)3.5 内置汇编 (21)4 源程序文档注释规范 (21)4.1. 注释文档的一般规范 (21)4.2 单元文件注释文档格式 (23)4.3 函数(属性)的注释文档格式 (25)5 delphi代码自动格式化工具 (27)6 代码标准文档更新 (27)1 前言本文档主要是为Delphi开发人员提供一个源代码书写标准,以及程序和文件的命名标准,使他们在编程时有一致格式可遵循。
这样,每个编程人员编写的代码能够被其他人理解。
2 源程序书写规范2.1通用源代码格式规则1). 缩进缩进就是每级间有两个空格。
不要在源代码中放置制表符。
这是因为,制表符的宽度随着不同的设置和代码管理实用程序(打印、文档及版本控制等)而不同。
通过使用Tools|Environment 菜单,在Environment Options 对话框的General页上,不要选中Use Tab Character 和Optional Fill 复选框,这样,制表符就不会被保存。
2). 边距边距设置为80个字符。
varForm1: TForm1;Temp1 : string; //存放数值一和结果Clkd : boolean = false; //等号是否被按下过,默认为为按下过ClkJ : boolean = false; //数字键是否被按下过,默认为未按下过Temp2 : string; //存放数值二n : Integer;implementation{$R *.dfm}procedure TForm1.Button13Click(Sender: TObject);beginif Clkd = true thenbeginEdit1.Text := ''; //如果等号按下过,清空Edit1的内容Clkd := false; //还原等号状态值if Edit1.Text = '' thenEdit1.Text := '0' //如果Edit1内容为空,显示0elseEdit1.Text := Edit1.Text + '0'; //否则在Edit1内容的后一位显示0 endelseif ClkJ =true then //如果等号没有按下过,数字键按下过Edit1.Text := Edit1.Text + '0' //则在Edit1内容的后一位显示0elseEdit1.Text := '0'; //否则Edit1显示0ClkJ := true;Temp2 := Edit1.Text;end;procedure TForm1.Button9Click(Sender: TObject);beginif Clkd = true thenbeginEdit1.Text := ''; //如果等号按下过,清空Edit1的内容Clkd := false; //还原等号状态值if Edit1.Text = '' then //如果Edit1内容为空,显示1Edit1.Text := '1'elseEdit1.Text := Edit1.Text + '1'; //否则在Edit1内容的后一位显示1 endelseif ClkJ =true then //如果等号没有按下过,数字键按下过Edit1.Text := Edit1.Text + '1'elseEdit1.Text := '1';ClkJ := true;Temp2 := Edit1.Text;end;procedure TForm1.Button10Click(Sender: TObject);beginif Clkd = true thenbeginEdit1.Text := '';Clkd := false;if Edit1.Text = '' thenEdit1.Text := '2'elseEdit1.Text := Edit1.Text + '2';endelseif ClkJ =true thenEdit1.Text := Edit1.Text + '2'elseEdit1.Text := '2';ClkJ := true;Temp2 := Edit1.Text;end;procedure TForm1.Button11Click(Sender: TObject);beginif Clkd = true thenbeginEdit1.Text := '';Clkd := false;if Edit1.Text = '' thenEdit1.Text := '3'elseEdit1.Text := Edit1.Text + '3';endelseif ClkJ =true thenEdit1.Text := Edit1.Text + '3'elseEdit1.Text := '3';ClkJ := true;Temp2 := Edit1.Text;end;procedure TForm1.Button5Click(Sender: TObject); beginif Clkd = true thenbeginEdit1.Text := '';Clkd := false;if Edit1.Text = '' thenEdit1.Text := '4'elseEdit1.Text := Edit1.Text + '4';endelseif ClkJ =true thenEdit1.Text := Edit1.Text + '4'elseEdit1.Text := '4';ClkJ := true;Temp2 := Edit1.Text;end;procedure TForm1.Button6Click(Sender: TObject); beginif Clkd = true thenbeginEdit1.Text := '';Clkd := false;if Edit1.Text = '' thenEdit1.Text := '5'elseEdit1.Text := Edit1.Text + '5';endelseif ClkJ =true thenEdit1.Text := Edit1.Text + '5'elseEdit1.Text := '5';ClkJ := true;Temp2 := Edit1.Text;end;procedure TForm1.Button7Click(Sender: TObject); beginif Clkd = true thenbeginEdit1.Text := '';Clkd := false;if Edit1.Text = '' thenEdit1.Text := '6'elseEdit1.Text := Edit1.Text + '6';endelseif ClkJ =true thenEdit1.Text := Edit1.Text + '6'elseEdit1.Text := '6';ClkJ := true;Temp2 := Edit1.Text;end;procedure TForm1.Button1Click(Sender: TObject); beginif Clkd = true thenbeginEdit1.Text := '';Clkd := false;if Edit1.Text = '' thenEdit1.Text := '7'elseEdit1.Text := Edit1.Text + '7';endelseif ClkJ =true thenEdit1.Text := Edit1.Text + '7'elseEdit1.Text := '7';ClkJ := true;Temp2 := Edit1.Text;end;procedure TForm1.Button2Click(Sender: TObject); beginif Clkd = true thenbeginEdit1.Text := '';Clkd := false;if Edit1.Text = '' thenEdit1.Text := '8'elseEdit1.Text := Edit1.Text + '8';endelseif ClkJ =true thenEdit1.Text := Edit1.Text + '8'elseEdit1.Text := '8';ClkJ := true;Temp2 := Edit1.Text;end;procedure TForm1.Button3Click(Sender: TObject); beginif Clkd = true thenbeginEdit1.Text := '';Clkd := false;if Edit1.Text = '' thenEdit1.Text := '9'elseEdit1.Text := Edit1.Text + '9';endelseif ClkJ =true thenEdit1.Text := Edit1.Text + '9'elseEdit1.Text := '9';ClkJ := true;Temp2 := Edit1.Text;end;procedure TForm1.Button14Click(Sender: TObject); beginif Clkd = true thenbeginEdit1.Text := '';Clkd := false;if Edit1.Text = '' thenEdit1.Text := '.'elseEdit1.Text := Edit1.Text + '.';endelseif ClkJ =true thenEdit1.Text := Edit1.Text + '.'elseEdit1.Text := '.';ClkJ := true;Temp2 := Edit1.Text;end;procedure TForm1.Button4Click(Sender: TObject);beginn := 1; //加法运算符号Temp1 := Edit1.Text;Edit1.clear;end;procedure TForm1.Button8Click(Sender: TObject);beginn := 2; //减法运算符号Temp1 := Edit1.Text;Edit1.Clear;end;procedure TForm1.Button12Click(Sender: TObject);beginn := 3; //乘法运算符号Temp1 := Edit1.Text;Edit1.Clear;end;procedure TForm1.Button16Click(Sender: TObject);beginn := 4; //除法运算符号Temp1 := Edit1.Text;Edit1.Clear;end;procedure TForm1.Button17Click(Sender: TObject);beginEdit1.clear; //清空上次运行的数据end;procedure TForm1.Button18Click(Sender: TObject);beginForm1.close;end;procedure TForm1.Button15Click(Sender: TObject); //加减乘除运算过程begincase n of1: Temp1 := FloatToStr(StrToFloat(Temp1) + StrToFloat(Temp2));2: Temp1 := FloatToStr(StrToFloat(Temp1) - StrToFloat(Temp2));3: Temp1 := FloatToStr(StrToFloat(Temp1) * StrToFloat(Temp2));4: if StrToFloat(Edit1.Text) = 0 thenbeginTemp1 := '除法运算中,除数不能为0';exit;endelseTemp1 := FloatToStr(StrToFloat(Temp1) / StrToFloat(Temp2))//Edit1.Text := Result;// else//Edit1.Text := Temp1;end;Edit1.Text := Temp1;Clkd := true;end;end.。
interfaceusesWindows, Messages, SysUtils, Variants, Classes, Dialogs, Math, Graphics, Controls, Forms, StdCtrls;typeTForm1 = class(TForm)edt1: TEdit;btn10: TButton;btn1: TButton;btn2: TButton;btn3: TButton;btn4: TButton;btn5: TButton;btn6: TButton;btn7: TButton;btn8: TButton;btn9: TButton;btnEqual: TButton;btn12: TButton;btnC: TButton;btn14: TButton;procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure opInput(Sender: TObject);procedure btnEqualClick(Sender: TObject);procedure btnCClick(Sender: TObject);function isDigit(s: string): Boolean;procedure numInput(Sender: TObject);//procedure numOpInput(Sender: TObject);private{}end;{自定义的TMyList类}TMyList = class(TList)end;varForm1: TForm1;List: TMyList;tempStr: string;implementation{$R *.dfm}{创建}procedure TForm1.FormCreate(Sender: TObject);beginList := TMyList.Create;edt1.Text := '';end;{释放}procedure TForm1.FormDestroy(Sender: TObject);beginList.Free;end;{判断一个字符串是否为数字}function TForm1.isDigit(s: string): Boolean;vari: Integer;beginResult := True;for i := 1 to Length(s) dobeginif not(s[i] in ['0'..'9','.']) thenResult := False;end;end;{输入数字处理}procedure TForm1.numInput(Sender: TObject);beginif(edt1.Text = '') or (string(st^) = '+') or (string(st^) = '*') then beginedt1.Text := (Sender as TButton).Caption;endelsebeginedt1.Text := edt1.Text + (Sender as TButton).Caption;end;tempStr := edt1.Text;end;{操作符处理}procedure TForm1.opInput(Sender: TObject);beginif isDigit(tempStr) and (tempStr <> '') thenbeginnew(str);str^ := tempStr;List.Add(str);tempStr := '';end;if List.Count = 0 thenbeginShowMessage('输入无效,请先输入数字');exit;//跳出本过程endelsebeginedt1.Text := (Sender as TButton).Caption;New(str);str^ := edt1.Text;List.Add(str);edt1.Clear;end;end;{等号处理list}procedure TForm1.btnEqualClick(Sender: TObject); var//tempResult: Extended;temp: Extended;tempStr1, tempStr2: string;i: Integer;beginnew(str);str^ := tempStr;List.Add(str);edt1.Clear;tempStr := '';if List.Count = 0 thenShowMessage('empty list')elsebeginfor i := 0 to List.Count - 1 dobegintempStr1 := string(List.Items[i]^);if tempStr1 = '+' thenbegintempStr1 := string(List.Items[i - 1]^);tempStr2 := string(List.Items[i + 1]^);New(str);str^ := FloatToStr(StrToFloat(tempStr1) + StrToFloat(tempStr2));List.Delete(i + 1);List.Insert(i + 1, str);end;if tempStr1 = '*' thenbegintempStr1 := string(List.Items[i - 1]^);tempStr2 := string(List.Items[i + 1]^);New(str);temp := StrToFloat(tempStr1) * StrToFloat(tempStr2);str^ := FloatToStr(temp);List.Delete(i + 1);List.Insert(i + 1, str);end;end;edt1.Text := string(List.Items[List.Count - 1]^);List.Clear;New(str);str^ := edt1.Text;List.Add(str);//ShowMessageFmt('count=%d',[List.Count]);end;end;procedure TForm1.btnCClick(Sender: TObject);beginif List.Count = 0 thenShowMessage('list为空,不用清空');List.clear;edt1.Text := '';end;end.。
标题:深度解析Delphi中的FFT程序代码在Delphi中,FFT(快速傅里叶变换)算法是一种常用的数学计算方法,用于处理信号和图像处理、数据压缩、声音分析等领域。
本文将深度解析Delphi中的FFT程序代码,帮助读者全面理解并掌握这一重要的算法。
一、FFT简介快速傅里叶变换(FFT)是一种离散傅里叶变换(DFT)的快速算法,能够在计算机上高效地计算离散信号的频谱。
FFT算法在数字信号处理中得到广泛应用,是一种高效的频域分析方法。
在Delphi中,我们可以利用现成的FFT库或者自行编写FFT算法来实现信号的频域分析。
接下来,我们将对Delphi中常用的FFT程序代码进行深入讨论。
二、Delphi中的FFT程序代码在Delphi中,可以使用现成的FFT库来实现快速傅里叶变换,也可以自行编写FFT算法。
下面以调用现成的FFT库为例进行讨论。
1. 引入FFT库要在Delphi中进行FFT变换,首先需要引入FFT库。
可以在Delphi 的组件库中找到对应的FFT组件,或者下载第三方的FFT库,并在项目中引入相关的单元或者库文件。
2. 调用FFT函数一般来说,FFT库会提供FFT函数,我们可以通过调用这些函数来实现快速傅里叶变换。
在Delphi中,可以通过简单的函数调用来完成FFT变换,实现信号的频域分析。
以下是一个简单的示例代码:```delphivarSignal: TArray<Double>;FreqDomain: TArray<Complex>;begin// 初始化信号// ...// 进行FFT变换FFT(Signal, FreqDomain);// 处理频域数据// ...end;```以上代码演示了如何利用FFT库进行信号的频域分析,通过调用FFT 函数实现快速傅里叶变换,得到频域数据。
接下来我们将对FFT算法进行深入探讨。
三、FFT算法原理FFT算法是一种复杂的数学计算方法,其原理涉及到复数运算、递归计算等多个方面。
delphi 随机生成四则运算题目在 Delphi 中,你可以使用随机数生成器来生成四则运算题目。
以下是一个简单的示例,演示如何生成两个随机数和一个随机运算符,然后计算结果:```delphiprogram RandomArithmeticQuestion;{$APPTYPE CONSOLE}usesSysUtils, Classes;vara, b, operatorChar, result: Integer;beginWriteLn('随机四则运算题目:');// 生成两个随机数a := RandomRange(1, 100);b := RandomRange(1, 100);// 生成一个随机运算符operatorChar := RandomRange(Ord('+'), Ord('-'));// 根据运算符计算结果case operatorChar ofOrd('+'): result := a + b;Ord('-'): result := a - b;Ord(''): result := a b;Ord('/'): result := a div b; // 注意:这里使用 div,因为 Delphi 没有直接支持整数除法操作符 '/'end;// 输出题目和答案WriteLn(Format('题目: %d %c %d = ?', [a, Chr(operatorChar), b])); WriteLn('答案: ' + IntToStr(result));end.```这个程序首先生成两个介于 1 和 100 之间的随机整数(`a` 和 `b`),然后选择一个随机的运算符(`+`、`-`、`` 或 `/`)。
根据运算符,程序计算结果并将题目和答案输出到控制台。
一、编写相应的Delphi程序,分别实现以下科学计算功能:3. 计算级数∑∞=1!3nnn,精确到10-6 .要点:取不断增大的n值,计算∑∞=1! 3nnn的值,比较值的变化。
2.定义一个学生成绩类来统计一次考试的成绩。
要求:(1)从records.txt 读入每个学生每门功课成绩。
(2)求出每个学生的总分并输出到文件mark.txt。
(3)求出每门功课的平均分并输出到文件average.txt提示:假设有90名学生,5门课。
定义数据成员数组mark[90][5] 表示90个学生5 门功课的成绩。
对每个要求设计一个公有函数,分别为Input(), Total(), Average()。
在主函数中分别调用这三个函数。
records.txt 的格式:陈大85 79 84 78 90王二89 92 73 89 80张三65 97 60 58 62李四85 86 84 82 83王五91 93 89 87 95…………………………………….mark.txt 的格式:姓名总分average.txt 的格式:科目编号(1-5)平均分2.加密和解密。
有一行电文(从文件coded.txt 读入,不超过1024个字符),已按下面规律译成了密码:A――>Z a――>zB――>Y b――>yC――>X c――>x……….. ………..即第1 个字母变成第26 个字母,第2 个字母变成第25 个字母,第i 个字母变成第(26-i+1) 个字母,非字母字符时不变。
要求编出程序,将密码还原成原文,并输出密码和原文到文件decode.txt 。
文件code.txt 的格式:R zn z xloovtv hgfwvmg uiln wvkzignvmg lu xlnkfgvi zkkorxzgrlm.文件decode.txt 格式:密文:R zn z xloovtv hgfwvmg uiln wvkzignvmg lu xlnkfgvi zkkorxzgrlm.原文:I am a college student from department of computer application.。
Delphi编写标准指南一、序言二、通用源代码格式规则2.1 缩格2.2 页边空格2.3 Begin...End 配对三、Object Pascal3.1 括号3.2 保留字和关键字3.3 过程和函数(例程)3.3.1 命名/格式化3.3.2 形式参数3.3.2.1 格式化3.3.2.2 命名3.3.2.3 参数的排序3.3.2.4 常量参数3.3.2.5 名称的冲突3.4 变量3.4.1 变量的命名和格式3.4.2 局部变量3.4.3 全局变量的使用3.5 类型3.5.1 大写约定3.5.1.1 浮点指针类型3.5.1.2 枚举类型3.5.1.3 变数和ole变数类型3.5.2 结构类型3.5.2.1 数组类型3.5.2.2 记录类型3.6 语句3.6.1 if 语句3.6.2 case 语句3.6.2.1 一般性话题3.6.2.2 格式3.6.3 while 语句3.6.4 for 语句3.6.5 repeat 语句3.6.6 with 语句3.6.6.1 一般话题3.6.6.2 格式3.7 结构异常处理3.7.1 一般话题3.7.2 try...finally的使用3.7.3 try...except的使用3.7.4 try...except...else的使用3.8 类类型3.8.1 命名和格式3.8.2 域3.8.2.1 命名/格式3.8.2.2 可视化3.8.3 方法3.8.3.1 命名/格式3.8.3.2 使用静态的方法3.8.3.3 使用虚拟/动态的方法3.8.3.4 使用抽象的方法3.8.3.5 属性存取方法3.8.4 属性3.8.4.1 命名/格式3.8.4.2 使用存取的方法四、文件4.1 工程文件4.1.1 命名4.2 窗体文件4.2.1 命名4.3 数据模板文件4.3.1 命名4.4 远端数据模板文件4.4.1 命名4.5 Unit文件4.5.1 通用Unit结构4.5.1.1 unit的名字4.5.1.2 uses子句4.5.1.3 interface部分4.5.1.4 implementation部分4.5.1.5 initialization部分4.5.1.6 finalization部分4.5.2 窗体单元4.5.2.1 命名4.5.3 数据模板单元4.5.3.1 命名4.5.4 一般目的单元4.5.4.1 命名4.5.5 构件单元4.5.5.1 命名4.6 文件头五、窗体和数据模板5.1 窗体5.1.1 窗体类型命名标准5.1.2 窗体实例命名标准5.1.3 自动创建窗体5.1.4 模式窗体实例化函数5.2 数据模板5.2.1 数据模板命名标准5.2.2 数据模板实例命名标准六、包6.1 使用运行包和设计包的比较6.2 文件命名标准七、构件7.1 用户自定义构件7.2 构件单元7.3 使用注册单元7.4 构件实例命名约定7.5 构件的前缀7.6 Standard页7.7 Additional页7.8 Win32页7.9 System页7.10 Internet页7.11 Data Access页7.12 Data Controls页7.13 Decision Cube页7.14 QReport页7.15 Dialogs页7.16 Win3.1页7.17 Samples页7.18 ActiveX页7.19 Midas页一、序言本文档详述了在Delphi 4开发者指南下进行编程的代码编写标准。
delphi实现计算器源码-完整版private{ Private declarations }protected// procedure CreateParams(var Params: TCreateParams);override; public{ Public declarations }end;TRightEdit = class(TEdit)protectedprocedure CreateParams(var Params : TCreateParams);override; end;typeoperator = (Emp,add,sub,mul,divid); //空、加、减、乘、除varFrmCounter: TFrmCounter;MyRightEdit: TRightEdit;operate: Operator = emp;operate1: Operator = emp; //记录上一次用户按下的运算符Pointed: Boolean = False; //是否输入小数点temp: string = '';tempnum: Real = 0.0;implementation{$R *.dfm}//重载TRightEdit的CreateParams自定义编辑框的一些样式procedure TRightEdit.CreateParams(var Params : TCreateParams); begininherited;Params.Style := params.Style + ES_Right;//创建窗体时初始化一些参数procedure TFrmCounter.FormCreate(Sender: TObject);beginMyRightEdit := TrightEdit.Create(nil);with MyRightEdit dobeginparent := panel1;text := '0.';MyRightEdit.Height := 100;Align := alTop;Enabled := False;ReadOnly := True;show;end;end;//清零的响应函数procedure TFrmCounter.SBClearClick(Sender: TObject);beginPointed := False;MyRightEdit.Text := '0.';TempNum := 0.0;Operate := emp;temp := '';end;//数字键输入响应函数procedure TFrmCounter.SpeedButton1Click(Sender: TObject);varStrWidth: Integer;if (temp = '')or(Operate <> emp) thenTempNum := StrToFloat(MyRightEdit.Text);if Operate <> emp thenMyRightEdit.Text := '0.';Temp := Trim(MyRightEdit.Text);StrWidth := Length(temp);if Sender is TSpeedButton thenbeginif Operate <> emp thenbeginMyRightEdit.Text := '0.';Operate := emp;end;if Pointed = False thenbeginif StrToFloat(MyRightEdit.Text) = 0 thenMyRightEdit.Text := FloatToStr(StrToFloat(MyRightEdit.T ext)+ StrToInt(TSpeedButton(Sender).Caption))+'.'else beginInsert(Trim(TspeedButton(Sender).Caption),temp,StrWidth);MyRightEdit.Text := temp;end;endelse beginInsert(Trim(TSpeedButton(Sender).Caption),temp,StrWidth+ 1);MyRightEdit.Text := temp;end;end;//正负符号响应函数procedure TFrmCounter.SpeedButton13Click(Sender: TObject);beginif Operate <> emp thenbeginTempNum := StrToFloat(MyRightEdit.Text);MyRightEdit.Text := '0.';Operate := emp;end;if StrToFloat(MyRightEdit.Text) > 0 thenbeginMyRightEdit.Text := FloatToStr(-StrToFloat(MyRightEdit.Text));if Pos('.',Trim(MyRightEdit.Text))=0 thenMyRightEdit.Text := FloatToStr(StrT oFloat(MyRightEdit.Text))+'.'; endelse if StrToFloat(MyRightEdit.Text)<0 thenbeginMyRightEdit.Text := FloatToStr(abs(StrT oFloat(MyRightEdit.Text)));if Pos('.',Trim(MyRightEdit.Text))=0 thenMyRightEdit.Text := FloatToStr(StrT oFloat(MyRightEdit.Text))+'.'; end;end;//小数点的输入procedure TFrmCounter.SpeedButton14Click(Sender: TObject);beginif Operate <> emp thenOperate := emp;MyRightEdit.Text := '0';end;if Pointed = True thenBeepelsePointed := True;end;//显示运算结果procedure TFrmCounter.SpeedButton19Click(Sender: TObject);beginif (Operate = emp)and(Trim(temp)<>'') thenbegincase Operate1 ofadd: beginMyRightEdit.Text := FloatToStr(StrT oFloat(MyRightEdit.Text)+TempNum);end;sub: beginMyRightEdit.Text := FloatToStr(TempNum-StrToFloat(MyRightEdit.Text));end;mul: beginMyRightEdit.Text := FloatToStr(TempNum*StrT oFloat(MyRightEdit.Text));end;divid: beginif StrToFloat(MyRightEdit.Text)<>0 thenMyRightEdit.Text := FloatToStr(TempNum/StrT oFloat(MyRightEdit.Text))elseApplication.MessageBox('除数不能为零。
2011开发工具综合设计论文一:设计意图:本次开发工具综合设计选用计算器为最终的设计题目,一是因为计算器是一个普遍使用的工具,另外学Delphi开发工具也让我觉得应该从简单到复杂来慢慢掌握Delphi开发工具的原理。
二:主要实现方法本次开发计算器主要采用Delphi开发工具实现,依次声明以下变量:第一个操作数x,string型第二个操作数y,string 型ca_operator,char型用来保存运算操作符布尔变量operated,boolean型,用来判断运算操作符按钮是否被按下xp,string型,xp用来存储复制粘贴的数mc,real型,mc用来存储数据tfch,integer型,tfch用来显示内存是否已经存储了数据等于1表示已经存储了,等于0表示尚未存储。
k: integer;//判断0被按下几次,用来保护不会输入‘0000000’这样的数。
de:integer;//判断等于号是否被按下temp: string;//用来暂时存储运算结果procedure calc (a,b:double;op:char) 声明一个进行计算的过程(1)在按下0到9这10个数字键时,采用如下的方法:对于‘0’键,首先判断操作符是否被按下,如果没有被按下,并且0已经被按下,则说明现在输入第一个操作数就将第一个操作数加上字符‘0’,再在Edit中显示出来。
如果没有被按下并且第一个操作数为空,咋清空edit1并且使x:=0,edit1显示x。
如果被按下,则说明现在按下的是第二个操作数,如果第一个操作数不为空并且第二个操作数不为0并且等于号没有被按下,则第二个操作数加上字符0,并且edit1加上字符0.如果第一个草组搜狐不为空且第二个操作数为0并且等号没有被按下,则使第二个操作数为0.如果第一个操作数不为空并且第二个操作数为空且等于号没有被按下,则第二个操作数置0,且edit1加上字符0.如果操作符被按下并且等于号也被按下,说明进行第二次运算,则清空两个操作数以及temp,edit1,操作符,operated,以及de,并且第一个操作数加上字符0,在Edit显示出来。
varForm1:TForm1;Temp1:string;//存放数值一和结果Clkd:boolean=false;//等号是否被按下过,默认为为按下过ClkJ:boolean=false;//数字键是否被按下过,默认为未按下过Temp2:string;//存放数值二n:Integer;implementation{$R*.dfm}procedure TForm1.Button13Click(Sender:TObject);beginif Clkd=true thenbeginEdit1.Text:='';//如果等号按下过,清空Edit1的内容Clkd:=false;//还原等号状态值if Edit1.Text=''thenEdit1.Text:='0'//如果Edit1内容为空,显示0elseEdit1.Text:=Edit1.Text+'0';//否则在Edit1内容的后一位显示0 endelseif ClkJ=true then//如果等号没有按下过,数字键按下过Edit1.Text:=Edit1.Text+'0'//则在Edit1内容的后一位显示0elseEdit1.Text:='0';//否则Edit1显示0ClkJ:=true;Temp2:=Edit1.Text;end;procedure TForm1.Button9Click(Sender:TObject);beginif Clkd=true thenbeginEdit1.Text:='';//如果等号按下过,清空Edit1的内容Clkd:=false;//还原等号状态值if Edit1.Text=''then//如果Edit1内容为空,显示1Edit1.Text:='1'elseEdit1.Text:=Edit1.Text+'1';//否则在Edit1内容的后一位显示1 endelseif ClkJ=true then//如果等号没有按下过,数字键按下过Edit1.Text:=Edit1.Text+'1'elseEdit1.Text:='1';ClkJ:=true;Temp2:=Edit1.Text;end;procedure TForm1.Button10Click(Sender:TObject);beginif Clkd=true thenbeginEdit1.Text:='';Clkd:=false;if Edit1.Text=''thenEdit1.Text:='2'elseEdit1.Text:=Edit1.Text+'2';endelseif ClkJ=true thenEdit1.Text:=Edit1.Text+'2'elseEdit1.Text:='2';ClkJ:=true;Temp2:=Edit1.Text;end;procedure TForm1.Button11Click(Sender:TObject);beginif Clkd=true thenbeginEdit1.Text:='';Clkd:=false;if Edit1.Text=''thenEdit1.Text:='3'elseEdit1.Text:=Edit1.Text+'3';endelseif ClkJ=true thenEdit1.Text:=Edit1.Text+'3'elseEdit1.Text:='3';ClkJ:=true;Temp2:=Edit1.Text;end;procedure TForm1.Button5Click(Sender:TObject); beginif Clkd=true thenbeginEdit1.Text:='';Clkd:=false;if Edit1.Text=''thenEdit1.Text:='4'elseEdit1.Text:=Edit1.Text+'4';endelseif ClkJ=true thenEdit1.Text:=Edit1.Text+'4'elseEdit1.Text:='4';ClkJ:=true;Temp2:=Edit1.Text;end;procedure TForm1.Button6Click(Sender:TObject); beginif Clkd=true thenbeginEdit1.Text:='';Clkd:=false;if Edit1.Text=''thenEdit1.Text:='5'elseEdit1.Text:=Edit1.Text+'5';endelseif ClkJ=true thenEdit1.Text:=Edit1.Text+'5'elseEdit1.Text:='5';ClkJ:=true;Temp2:=Edit1.Text;end;procedure TForm1.Button7Click(Sender:TObject); beginif Clkd=true thenbeginEdit1.Text:='';Clkd:=false;if Edit1.Text=''thenEdit1.Text:='6'elseEdit1.Text:=Edit1.Text+'6';endelseif ClkJ=true thenEdit1.Text:=Edit1.Text+'6'elseEdit1.Text:='6';ClkJ:=true;Temp2:=Edit1.Text;end;procedure TForm1.Button1Click(Sender:TObject); beginif Clkd=true thenbeginEdit1.Text:='';Clkd:=false;if Edit1.Text=''thenEdit1.Text:='7'elseEdit1.Text:=Edit1.Text+'7';endelseif ClkJ=true thenEdit1.Text:=Edit1.Text+'7'elseEdit1.Text:='7';ClkJ:=true;Temp2:=Edit1.Text;end;procedure TForm1.Button2Click(Sender:TObject); beginif Clkd=true thenbeginEdit1.Text:='';Clkd:=false;if Edit1.Text=''thenEdit1.Text:='8'elseEdit1.Text:=Edit1.Text+'8';endelseif ClkJ=true thenEdit1.Text:=Edit1.Text+'8'elseEdit1.Text:='8';ClkJ:=true;Temp2:=Edit1.Text;end;procedure TForm1.Button3Click(Sender:TObject); beginif Clkd=true thenbeginEdit1.Text:='';Clkd:=false;if Edit1.Text=''thenEdit1.Text:='9'elseEdit1.Text:=Edit1.Text+'9';endelseif ClkJ=true thenEdit1.Text:=Edit1.Text+'9'elseEdit1.Text:='9';ClkJ:=true;Temp2:=Edit1.Text;end;procedure TForm1.Button14Click(Sender:TObject); beginif Clkd=true thenbeginEdit1.Text:='';Clkd:=false;if Edit1.Text=''thenEdit1.Text:='.'elseEdit1.Text:=Edit1.Text+'.';endelseif ClkJ=true thenEdit1.Text:=Edit1.Text+'.'elseEdit1.Text:='.';ClkJ:=true;Temp2:=Edit1.Text;end;procedure TForm1.Button4Click(Sender:TObject);beginn:=1;//加法运算符号Temp1:=Edit1.Text;Edit1.clear;end;procedure TForm1.Button8Click(Sender:TObject);beginn:=2;//减法运算符号Temp1:=Edit1.Text;Edit1.Clear;end;procedure TForm1.Button12Click(Sender:TObject);beginn:=3;//乘法运算符号Temp1:=Edit1.Text;Edit1.Clear;end;procedure TForm1.Button16Click(Sender:TObject);beginn:=4;//除法运算符号Temp1:=Edit1.Text;Edit1.Clear;end;procedure TForm1.Button17Click(Sender:TObject);beginEdit1.clear;//清空上次运行的数据end;procedure TForm1.Button18Click(Sender:TObject);beginForm1.close;end;procedure TForm1.Button15Click(Sender:TObject);//加减乘除运算过程begincase n of1:Temp1:=FloatToStr(StrToFloat(Temp1)+StrToFloat(Temp2));2:Temp1:=FloatToStr(StrToFloat(Temp1)-StrToFloat(Temp2));3:Temp1:=FloatToStr(StrToFloat(Temp1)*StrToFloat(Temp2));4:if StrToFloat(Edit1.Text)=0thenbeginTemp1:='除法运算中,除数不能为0';exit;endelseTemp1:=FloatToStr(StrToFloat(Temp1)/StrToFloat(Temp2))//Edit1.Text:=Result;//else//Edit1.Text:=Temp1;end;Edit1.Text:=Temp1;Clkd:=true;end;end.。