Delphi 实现简单计算器

合集下载

delphi dbgrideh单元格计算

delphi dbgrideh单元格计算

在Delphi 中,使用DBGridEh 控件进行单元格计算需要自定义计算逻辑。

DBGridEh 控件没有内置的计算功能,但您可以通过使用事件和处理程序来实现单元格计算。

以下是一个简单的示例,演示如何在DBGridEh 中执行单元格计算:首先,确保已经安装和配置了DBGridEh 控件。

您可以从第三方供应商的网站下载DBGridEh 控件,并按照提供的说明进行安装。

创建一个新的Delphi 项目,并将DBGridEh 控件添加到窗体上。

您可以通过拖放操作从组件面板中将DBGridEh 控件放置到窗体上。

设置DBGridEh 的属性,如连接到数据集、指定列等。

这些步骤将根据您的具体需求而有所不同。

为DBGridEh 控件的OnDrawColumnCell 事件创建一个事件处理程序。

此事件处理程序将在绘制单元格时被调用,并允许您自定义单元格的外观和行为。

delphiprocedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumnEh; State: TGridDrawState);varValue1, Value2, Result: Double;begin// 检查当前列和数据列是否符合您的计算条件if (Column.FieldName = 'Column1') and (DataCol = 1) thenbegin// 获取单元格的值Value1 := StrToFloat(DBGridEh1.Cells[DataCol, DataCol - 1]);Value2 := StrToFloat(DBGridEh1.Cells[DataCol, DataCol + 1]);// 执行计算Result := Value1 + Value2; // 这里是一个简单的加法计算,您可以根据需要进行自定义计算// 设置单元格的文本为计算结果DBGridEh1.Cells[DataCol, DataCol] := FloatToStr(Result);end;end;上述示例代码中的计算逻辑是简单的加法运算,您可以根据实际需求修改计算部分的代码。

JS实现简易计算器的7种方法

JS实现简易计算器的7种方法

JS实现简易计算器的7种⽅法先放图(好吧⽐较挫)⽅法⼀:最容易版<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title><style>body {background-color: #eee;}#calculator {margin: 100px 0 0 150px;}</style></head><body><!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" onclick="addHandler();" /><input type="button" value="-" onclick="subtractHandler();" /><input type="button" value="×" onclick="multiplyHandler();" /><input type="button" value="÷" onclick="divideHandler();" /></p></div><script>// 获取元素var calculator = document.querySelector('#calculator');var formerInput = calculator.querySelector('.formerInput');var laterInput = calculator.querySelector('.laterInput');var sign = calculator.querySelector('.sign');var resultOutput = calculator.querySelector('.resultOutput');// 加function addHandler() {sign.innerHTML = '+';resultOutput.innerHTML = +formerInput.value + +laterInput.value;}// 减function subtractHandler() {sign.innerHTML = '-';resultOutput.innerHTML = formerInput.value - laterInput.value;}// 乘function multiplyHandler() {sign.innerHTML = '×';resultOutput.innerHTML = formerInput.value * laterInput.value;}// 除function divideHandler() {sign.innerHTML = '÷';resultOutput.innerHTML = formerInput.value / laterInput.value;}</script></body></html>⽅法⼆:结构和⾏为分离<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title>#calculator {margin: 100px 0 0 150px;}</style></head><body><!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" onclick="addHandler();" /><input type="button" value="-" onclick="subtractHandler();" /><input type="button" value="×" onclick="multiplyHandler();" /><input type="button" value="÷" onclick="divideHandler();" /></p></div><script>// 获取元素var calculator = document.querySelector('#calculator');var formerInput = calculator.querySelector('.formerInput');var laterInput = calculator.querySelector('.laterInput');var sign = calculator.querySelector('.sign');var resultOutput = calculator.querySelector('.resultOutput');var btns = calculator.querySelectorAll('.btn');// 绑定事件// +btns[0].onclick = addHandler;// -btns[1].onclick = subtractHandler;// ×btns[2].onclick = multiplyHandler;// ÷btns[3].onclick = divideHandler;// 加function addHandler() {sign.innerHTML = '+';resultOutput.innerHTML = +formerInput.value + +laterInput.value; }// 减function subtractHandler() {sign.innerHTML = '-';resultOutput.innerHTML = formerInput.value - laterInput.value;}// 乘function multiplyHandler() {sign.innerHTML = '×';resultOutput.innerHTML = formerInput.value * laterInput.value;}// 除function divideHandler() {sign.innerHTML = '÷';resultOutput.innerHTML = formerInput.value / laterInput.value;}</script></body></html>⽅法三:循环绑定事件<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title><style>body {background-color: #eee;}#calculator {margin: 100px 0 0 150px;<!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" onclick="addHandler();" /><input type="button" value="-" onclick="subtractHandler();" /><input type="button" value="×" onclick="multiplyHandler();" /><input type="button" value="÷" onclick="divideHandler();" /></p></div><script>// 获取元素var calculator = document.querySelector('#calculator');var formerInput = calculator.querySelector('.formerInput');var laterInput = calculator.querySelector('.laterInput');var sign = calculator.querySelector('.sign');var resultOutput = calculator.querySelector('.resultOutput');var btns = calculator.querySelectorAll('.btn');// 绑定事件for (var i = 0; i < btns.length; i++) {btns[i].onclick = function () {switch (this.title) {case 'add':addHandler();break;case 'subtract':subtractHandler();break;case 'multiply':multiplyHandler();break;case 'divide':divideHandler();break;}};}// 加function addHandler() {sign.innerHTML = '+';resultOutput.innerHTML = +formerInput.value + +laterInput.value; }// 减function subtractHandler() {sign.innerHTML = '-';resultOutput.innerHTML = formerInput.value - laterInput.value;}// 乘function multiplyHandler() {sign.innerHTML = '×';resultOutput.innerHTML = formerInput.value * laterInput.value;}// 除function divideHandler() {sign.innerHTML = '÷';resultOutput.innerHTML = formerInput.value / laterInput.value;}</script></body></html>⽅法四:提取函数<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title><style>body {margin: 100px 0 0 150px;}</style></head><body><!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" class="btn" title="add" /><input type="button" value="-" class="btn" title="subtract" /> <input type="button" value="×" class="btn" title="multiply" /> <input type="button" value="÷" class="btn" title="divide" /> </p></div><script>// 获取元素var calculator = document.querySelector('#calculator');var formerInput = calculator.querySelector('.formerInput');var laterInput = calculator.querySelector('.laterInput');var sign = calculator.querySelector('.sign');var resultOutput = calculator.querySelector('.resultOutput');var btns = calculator.querySelectorAll('.btn');// 绑定事件each(btns, function (index, elem ) {elem.onclick = function () {switch (this.title) {case 'add':addHandler();break;case 'subtract':subtractHandler();break;case 'multiply':multiplyHandler();break;case 'divide':divideHandler();break;}};});// 遍历function each(array, fn) {for (var i = 0; i < array.length; i++) {fn(i, array[i]);}}// 更新符号function updateSign(symbol) {sign.innerHTML = symbol;}// 加法function add(num1, num2) {return +num1 + +num2;}// 减法function subtract(num1, num2) {return num1 - num2;}// 乘法function multiply(num1, num2) {return num1 * num2;}// 除法function divide(num1, num2) {return num1 / num2;}// 输出结果}// 加function addHandler() {// sign.innerHTML = '+';updateSign('+');outputResult(add(formerInput.value, laterInput.value));}// 减function subtractHandler() {updateSign('-');outputResult(subtract(formerInput.value, laterInput.value)); }// 乘function multiplyHandler() {updateSign('×');outputResult(multiply(formerInput.value, laterInput.value)); }// 除function divideHandler() {updateSign('÷');outputResult(divide(formerInput.value, laterInput.value)); }</script></body></html>⽅法五:管理代码(找到组织)<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title><style>body {background-color: #eee;}#calculator {margin: 100px 0 0 150px;}</style></head><body><!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" class="btn" title="add" /><input type="button" value="-" class="btn" title="subtract" /> <input type="button" value="×" class="btn" title="multiply" /> <input type="button" value="÷" class="btn" title="divide" /> </p></div><script>// 获取元素var wrapElem = document.querySelector('#calculator');var calculatorElem = {formerInput: wrapElem.querySelector('.formerInput'),laterInput: wrapElem.querySelector('.laterInput'),sign: wrapElem.querySelector('.sign'),resultOutput: wrapElem.querySelector('.resultOutput'), btns: wrapElem.querySelectorAll('.btn')};// 绑定事件each(calculatorElem.btns, function (index, elem ) {elem.onclick = function () {switch (this.title) {case 'add':addHandler();break;case 'subtract':multiplyHandler();break;case 'divide':divideHandler();break;}};});// 遍历function each(array, fn) {for (var i = 0; i < array.length; i++) {fn(i, array[i]);}}// 更新符号function updateSign(symbol) {calculatorElem.sign.innerHTML = symbol;}var operation = {add: function(num1, num2) {return +num1 + +num2;},subtract: function(num1, num2) {return num1 - num2;},multiply: function(num1, num2) {return num1 * num2;},divide: function(num1, num2) {return num1 / num2;}};// 输出结果function outputResult(result) {calculatorElem.resultOutput.innerHTML = result;}// 加function addHandler() {// sign.innerHTML = '+';updateSign('+');outputResult(operation.add(calculatorElem.formerInput.value, terInput.value));}// 减function subtractHandler() {updateSign('-');outputResult(operation.subtract(calculatorElem.formerInput.value, terInput.value)); }// 乘function multiplyHandler() {updateSign('×');outputResult(operation.multiply(calculatorElem.formerInput.value, terInput.value)); }// 除function divideHandler() {updateSign('÷');outputResult(operation.divide(calculatorElem.formerInput.value, terInput.value)); }</script></body></html>⽅法六:OCP开放--封闭原则<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title><style>body {background-color: #eee;}#calculator {margin: 100px 0 0 150px;}</style></head><!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" class="btn" title="add" /><input type="button" value="-" class="btn" title="subtract" /><input type="button" value="×" class="btn" title="multiply" /><input type="button" value="÷" class="btn" title="divide" /><input type="button" value="%" class="btn" title="mod" /><input type="button" value="^" class="btn" title="power" /><!-- <input type="button" value="1/x" class="btn" title="invert" /> --></p></div><script>// 获取元素var wrapElem = document.querySelector('#calculator');var calculatorElem = {formerInput: wrapElem.querySelector('.formerInput'),laterInput: wrapElem.querySelector('.laterInput'),sign: wrapElem.querySelector('.sign'),resultOutput: wrapElem.querySelector('.resultOutput'),btns: wrapElem.querySelectorAll('.btn')};// 绑定事件each(calculatorElem.btns, function (index, elem ) {elem.onclick = function () {updateSign(this.value);outputResult(operate(this.title, calculatorElem.formerInput.value, terInput.value)); };});// 遍历function each(array, fn) {for (var i = 0; i < array.length; i++) {fn(i, array[i]);}}// 更新符号function updateSign(symbol) {calculatorElem.sign.innerHTML = symbol;}// 运算function operate(name, num1, num2) {if (!operation[name]) throw new Error('不存在名为' + name + '的运算⽅法!');return operation[name](num1, num2);}var operation = {add: function(num1, num2) {return +num1 + +num2;},subtract: function(num1, num2) {return num1 - num2;},multiply: function(num1, num2) {return num1 * num2;},divide: function(num1, num2) {return num1 / num2;},addOperation: function (name, fn) {if (!this[name]) {this[name] = fn;}return this;}};operation.addOperation('mod', function (num1, num2) {return num1 % num2;}).addOperation('power', function (base, power) {return Math.pow(base, power);function outputResult(result) {calculatorElem.resultOutput.innerHTML = result;}</script></body></html>⽅法七:模块化<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title><style>body {background-color: #eee;}#calculator {margin: 100px 0 0 150px;}</style></head><body><!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" class="btn" title="add" /><input type="button" value="-" class="btn" title="subtract" /><input type="button" value="×" class="btn" title="multiply" /><input type="button" value="÷" class="btn" title="divide" /><input type="button" value="%" class="btn" title="mod" /><input type="button" value="^" class="btn" title="power" /><input type="button" value="1/x" class="btn" title="invert" /></p></div><script>(function () {// 获取元素var wrapElem = document.querySelector('#calculator');var calculatorElem = {formerInput: wrapElem.querySelector('.formerInput'),laterInput: wrapElem.querySelector('.laterInput'),sign: wrapElem.querySelector('.sign'),resultOutput: wrapElem.querySelector('.resultOutput'),btns: wrapElem.querySelectorAll('.btn')};// 绑定事件each(calculatorElem.btns, function (index, elem ) {elem.onclick = function () {updateSign(this.value);outputResult(operate(this.title, calculatorElem.formerInput.value, terInput.value)); };});// 遍历function each(array, fn) {for (var i = 0; i < array.length; i++) {fn(i, array[i]);}}// 更新符号function updateSign(symbol) {calculatorElem.sign.innerHTML = symbol;}// 运算var operate = (function () {subtract: function(num1, num2) {return num1 - num2;},multiply: function(num1, num2) {return num1 * num2;},divide: function(num1, num2) {return num1 / num2;},addOperation: function (name, fn) {if (!operation[name]) {operation[name] = fn;}return operation;}};function operate(name) {if (!operation[name]) throw new Error('不存在名为' + name + '的运算⽅法!');return operation[name].apply(operation, [].slice.call(arguments, 1, arguments.length)); }operate.addOperation = operation.addOperation;return operate;})();operate.addOperation('mod', function (num1, num2) {return num1 % num2;}).addOperation('power', function (base, power) {return Math.pow(base, power);}).addOperation('invert', function (num) {return 1 / num;});// 输出结果function outputResult(result) {calculatorElem.resultOutput.innerHTML = result;}})();</script></body></html>。

delphi 用TList实现的简单计算器

delphi 用TList实现的简单计算器

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利用ReportMachine报表控件制作小计和总计报表

Delphi利用ReportMachine报表控件制作小计和总计报表

Delphi利⽤ReportMachine报表控件制作⼩计和总计报表最近在做⼀个Delphi的发货清单的打印程序,其中涉及到需要计算清单的⼩计和总计的功能,⽂字难以表达清楚,上图吧:报表第⼀页的⼩计计算当前页⾯的商品价格总和,总计⽬前和⼩计⼀样是计算截⽌到当前页⾯的所有商品的⾦额和,下图为最后⼀页:这下⼤家明⽩了吧,就是要实现这样的报表。

废话不多说了,开始讲解我的思路:1.既然要计算⼩计,就是每页的⾦额和了,加⼊ReportMachine的计算⽂本框(TRMCalcMemoView),然后设置要汇总的字段值为数据字段“factSum”,然后选择计算⽂本框的属性⾯板中的“CalcOptions”选中“统计Brand”为要汇总的主项数据,统计类型为“合计(Sum)”,如图所⽰:2.最难的部分就是总计的计算,这不能简单的⽤计算⽂本框就能解决的,于是不得不⽤ReportMachine 的代码来处理,也就是在总计的⽂本框的OnBeforePrint事件中计算之前的⼩计⽂本框的值的和,然后赋值给总计⽂本框显⽰,先看下设计的报表:红⾊⽂字为两项总计的⽂本框的Name属性值。

下⾯是ReportMachine中⾃定义的OnBeforePrint事件函数代码如下:unit Report;varlValue,tValue: Double;//lValue=⾦额总计 tValue=税额总计procedure Memo1_OnBeforePrint(Sender: TObject);beginlValue:=lValue+CalcMemo1.CalcValue; //CalcMemo1为⾦额⼩计的⽂本框 TRMMemoView(Sender).Memo.Text := lValue; end;procedure Memo40_OnBeforePrint(Sender: TObject);begintValue:=tValue+CalcMemo2.CalcValue;//CalcMemo2为税额⼩计的⽂本框 TRMMemoView(Sender).Memo.Text := tValue; end;procedure Main;beginMemo1.OnBeforePrint:= Memo1_OnBeforePrint; //指定⾦额总计的⽂本框的OnBeforePrint事件的处理函数Memo40.OnBeforePrint:= Memo40_OnBeforePrint;//指定税额总计的⽂本框的OnBeforePrint事件的处理函数end;end.上⾯的代码先声明了两个事件函数⽤于计算两个累加的总计的值,然后赋值给相应的总计⽂本框;然后再Main中指定给总计⽂本框的事件,这样当打印总计之前先汇总赋值并打印。

delphi编写简单的计算器

delphi编写简单的计算器
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure TForm1.Button11Click(Sender: TObject);
var //n:integer;
// temp1:string;
temp2,temp3:extended;
begin
temp3:=strtofloat(edit1.Text);
begin
procedure TForm1.Button8Click(Sender: TObject);
begin
if key=true
then
edit1.Text:=edit1.Text+&#39;8&#39;
else beg
in
var
Form1: TForm1;
n:integer;
temp1:extended;
key:boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if key=true
begin
if key=true
then
edit1.Text:=edit1.Text+&#39;3&#39;

delphi 随机生成四则运算题目

delphi 随机生成四则运算题目

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开发工具计算器设计文档

delphi开发工具计算器设计文档

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显示出来。

eclipse实现简单计算器代码.

eclipse实现简单计算器代码.

eclipse实现简单计算器代码.package Computer;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.util.LinkedList;import java.text.NumberFormat;public class Cacultor extends Frame implements ActionListener{/*** @param args*/NumberButton numberButton[];OperationButton operationButton[];Button 小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮;Panel panel;JTextField resultShow;String 运算符号[]={"+","-","*","/"};LinkedList 链表;boolean 是否按下等号=false;public Cacultor(){super("计算器");链表=new LinkedList();numberButton=new NumberButton[10];for(int i=0;i<=9;i++){numberButton[i]=new NumberButton(i);numberButton[i].addActionListener(this);}operationButton=new OperationButton[4];for(int i=0;i<4;i++){operationButton[i]=new OperationButton(运算符号[i]);operationButton[i].addActionListener(this);}小数点按钮=new Button(".");正负号按钮=new Button("+/-");等号按钮=new Button("=");求倒数按钮=new Button("1/x");退格按钮=new Button("退格");清零按钮=new Button("c");清零按钮.setForeground(Color.red);退格按钮.setForeground(Color.red);等号按钮.setForeground(Color.red);求倒数按钮.setForeground(Color.blue);正负号按钮.setForeground(Color.blue);小数点按钮.setForeground(Color.blue);退格按钮.addActionListener(this);清零按钮.addActionListener(this);等号按钮.addActionListener(this);小数点按钮.addActionListener(this);正负号按钮.addActionListener(this);求倒数按钮.addActionListener(this);resultShow=new JTextField(10);resultShow.setHorizontalAlignment(JTextField.RIGHT); resultShow.setForeground(Color.blue);resultShow.setFont(new Font("TimesRoman",Font.PLAIN,14)); resultShow.setBorder(newSoftBevelBorder(BevelBorder.LOWERED));resultShow.setBackground(Color.white);resultShow.setEditable(false);panel=new Panel();panel.setLayout(new GridLayout(4,5));panel.add(numberButton[1]);panel.add(numberButton[2]);panel.add(numberButton[3]);panel.add(operationButton[0]);panel.add(清零按钮);panel.add(numberButton[4]);panel.add(numberButton[5]);panel.add(numberButton[6]);panel.add(operationButton[1]);panel.add(退格按钮);panel.add(numberButton[7]);panel.add(numberButton[8]);panel.add(numberButton[9]);panel.add(operationButton[2]);panel.add(求倒数按钮);panel.add(numberButton[0]);panel.add(正负号按钮);panel.add(小数点按钮);panel.add(operationButton[3]);panel.add(等号按钮);add(panel,BorderLayout.CENTER);add(resultShow,BorderLayout.NORTH);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){ System.exit(0);}});setVisible(true);setBounds(100,50,240,180);setResizable(false);validate();}//按钮事件的处理public void actionPerformed(ActionEvent e){if(e.getSource() instanceof NumberButton){NumberButton b=(NumberButton)e.getSource();if(链表.size()==0){int number=b.getNumber();链表.add(""+number);resultShow.setText(""+number);是否按下等号=false;}else if(链表.size()==1&&是否按下等号==false){ int number=b.getNumber();String num=(String)链表.getFirst();String s=num.concat(""+number);链表.set(0, s);resultShow.setText(s);}else if(链表.size()==1&&是否按下等号==true){int number=b.getNumber();链表.removeFirst();链表.add(""+number);是否按下等号=false;resultShow.setText(""+number);}else if(链表.size()==2){int number=b.getNumber();链表.add(""+number);resultShow.setText(""+number);}else if(链表.size()==3){int number=b.getNumber();String num=(String)链表.getLast();String s=num.concat(""+number);链表.set(2, s);resultShow.setText(s);}}else if(e.getSource()instanceof OperationButton){ OperationButton b=(OperationButton)e.getSource();if(链表.size()==1){String fuhao=b.get运算符号();链表.add(fuhao);}else if(链表.size()==2){String fuhao=b.get运算符号();链表.set(1, fuhao);}else if(链表.size()==3){String fuhao=b.get运算符号();String number1=(String)链表.getFirst();String number2=(String)链表.getLast();String 运算符号=(String)链表.get(1);try{double n2=Double.parseDouble(number2); double n=0;if(运算符号.equals("+")){n=n1+n2;}else if(运算符号.equals("-")){n=n1-n2;}else if(运算符号.equals("*")){n=n1*n2;}else if(运算符号.equals("/")){n=n1/n2;}链表.clear();链表.add(""+n);链表.add(fuhao);resultShow.setText(""+n);}catch(Exception ee){}}}else if(e.getSource()==等号按钮){是否按下等号=true;if(链表.size()==1&&链表.size()==2){ String num=(String)链表.getFirst(); resultShow.setText(""+num);}else if(链表.size()==3){String number1=(String)链表.getFirst(); String number2=(String)链表.getLast(); String 运算符号=(String)链表.get(1);try{double n2=Double.parseDouble(number2); double n=0;if(运算符号.equals("+")){n=n1+n2;}else if(运算符号.equals("-")){n=n1-n2;}else if(运算符号.equals("*")){n=n1*n2;}else if(运算符号.equals("/")){n=n1/n2;}resultShow.setText(""+n);链表.set(0, ""+n);链表.removeLast();链表.removeLast();}catch(Exception ee){}}}else if(e.getSource()==小数点按钮){if(链表.size()==0){是否按下等号=false;}else if(链表.size()==1){String dot=小数点按钮.getLabel();String num=(String)链表.getFirst();String s=null;if(num.indexOf(dot)==-1){s=num.concat(dot);链表.set(0, s);}else{s=num;}链表.set(0, s);resultShow.setText(s);}else if(链表.size()==3){String dot=小数点按钮.getLabel(); String num=(String)链表.getLast(); String s=null;if(num.indexOf(dot)==-1){s=num.concat(dot);链表.set(2, s);}else{s=num;}resultShow.setText(s);}}else if(e.getSource()==退格按钮){if(链表.size()==1){String num=(String)链表.getFirst();if(num.length()>=1){num=num.substring(0,num.length()-1); 链表.set(0, num);resultShow.setText(num);}else{链表.removeLast();resultShow.setText("0");}}else if(链表.size()==3){String num=(String)链表.getLast();if(num.length()>=1){num=num.substring(0,num.length()-1); 链表.set(2, num);resultShow.setText(num);}else{链表.removeLast();resultShow.setText("0");}}}else if(e.getSource()==正负号按钮){if(链表.size()==1){String number1=(String)链表.getFirst(); try{double d=Double.parseDouble(number1); d=-1*d;String str=String.valueOf(d);链表.set(0, str);resultShow.setText(str);}catch(Exception ee){}}else if(链表.size()==3){String number2=(String)链表.getLast();try{double d=Double.parseDouble(number2); d=-1*d;String str=String.valueOf(d);链表.set(2, str);resultShow.setText(str);}catch(Exception ee){}}}else if(e.getSource()==求倒数按钮){if(链表.size()==1||链表.size()==2){String number1=(String)链表.getFirst(); try{double d=Double.parseDouble(number1); d=1.0/d;String str=String.valueOf(d);链表.set(0, str);resultShow.setText(str);}catch(Exception ee){}}else if(链表.size()==3){String number2=(String)链表.getLast();try{double d=Double.parseDouble(number2); d=1.0/d;String str=String.valueOf(d);链表.set(0, str);resultShow.setText(str);}catch(Exception ee){}}}else if(e.getSource()==清零按钮){是否按下等号=false;resultShow.setText("0");链表.clear();}}public static void main(String[] args) {// TODO Auto-generated method stub new Cacultor();}}。

使用eclipse编写的小型计算器

使用eclipse编写的小型计算器

使用eclipse编写的小型计算器#include "Cal.h"#includeCal::Cal() :a_button("Bksp"), b_button("CE"), c_button("Clr"), d_button("土"),e_button("7"), f_button("8"), g_button("9"), h_button("/"), i_button("4"), j_button("5"), k_button("6"), l_button("*"),m_button("1"), n_button("2"), o_button("3"), p_button("-"), q_button("0"), r_button("."), s_button("="), t_button("+"){a_button.signal_clicked().connect(sigc::mem_fun(*this,&Cal::on_button_clicked_Bksp));b_button.signal_clicked().connect(sigc::mem_fun(*this,&Cal::on_button_clicked_CE));c_button.signal_clicked().connect(sigc::mem_fun(*this,&Cal::on_button_clicked_Clr));d_button.signal_clicked().connect(sigc::mem_fun(*this,&Cal::on_button_clicked_tu));e_button.signal_clicked().connect(sigc::mem_fun(*this,&Cal::on_button_clicked_7));f_button.signal_clicked().connect(sigc::mem_fun(*this,&Cal::on_button_clicked_8));g_button.signal_clicked().connect(sigc::mem_fun(*this,&Cal::on_button_clicked_9));h_button.signal_clicked().connect(sigc::mem_fun(*this,&Cal::on_button_clicked_chu));i_button.signal_clicked().connect(sigc::mem_fun(*this,&Cal::on_button_clicked_4));j_button.signal_clicked().connect(sigc::mem_fun(*this, &Cal::on_button_clicked_5));k_button.signal_clicked().connect(sigc::mem_fun(*this, &Cal::on_button_clicked_6));l_button.signal_clicked().connect(sigc::mem_fun(*this, &Cal::on_button_clicked_cheng));m_button.signal_clicked().connect(sigc::mem_fun(*this, &Cal::on_button_clicked_1));n_button.signal_clicked().connect(sigc::mem_fun(*this, &Cal::on_button_clicked_2));o_button.signal_clicked().connect(sigc::mem_fun(*this, &Cal::on_button_clicked_3));p_button.signal_clicked().connect(sigc::mem_fun(*this, &Cal::on_button_clicked_jian));q_button.signal_clicked().connect(sigc::mem_fun(*this, &Cal::on_button_clicked_0));r_button.signal_clicked().connect(sigc::mem_fun(*this, &Cal::on_button_clicked_dian));s_button.signal_clicked().connect(sigc::mem_fun(*this, &Cal::on_button_clicked_deng));t_button.signal_clicked().connect(sigc::mem_fun(*this, &Cal::on_button_clicked_jia));add(vbox);vbox.pack_start(a_hbox);a_hbox.pack_start(a_label);a_hbox.pack_start(b_label);a_hbox.pack_start(c_label);a_hbox.pack_start(d_label);a_label.set_text("计算器(C)");b_label.set_text("编辑(E)");c_label.set_text("查看(V)");d_label.set_text("帮助(H)");vbox.pack_start(a_entry);a_entry.set_editable(false);//文本框不可编辑a_entry.set_alignment(Gtk::ALIGN_RIGHT); //设置文本框内容右对齐vbox.pack_start(b_hbox);b_hbox.pack_start(a_button);b_hbox.pack_start(b_button);b_hbox.pack_start(c_button);b_hbox.pack_start(d_button);vbox.pack_start(c_hbox);c_hbox.pack_start(e_button);c_hbox.pack_start(f_button);c_hbox.pack_start(g_button);c_hbox.pack_start(h_button);vbox.pack_start(d_hbox);d_hbox.pack_start(i_button);d_hbox.pack_start(j_button);d_hbox.pack_start(k_button);d_hbox.pack_start(l_button);vbox.pack_start(e_hbox);e_hbox.pack_start(m_button);e_hbox.pack_start(n_button);e_hbox.pack_start(o_button);e_hbox.pack_start(p_button);vbox.pack_start(f_hbox);f_hbox.pack_start(q_button);f_hbox.pack_start(r_button);f_hbox.pack_start(s_button);f_hbox.pack_start(t_button); show_all_children();}Cal::~Cal(){}void Cal::on_button_clicked_Bksp() {std::cout << "Bksp"<< std::endl; }void Cal::on_button_clicked_CE() {std::cout << "CE"<< std::endl;}void Cal::on_button_clicked_Clr() {std::cout << "Clr"<< std::endl;}void Cal::on_button_clicked_tu() {std::cout << "土"<< std::endl;}void Cal::on_button_clicked_7() {std::cout << "7"<< std::endl;a_entry.set_text("7");}void Cal::on_button_clicked_8(){std::cout << "8"<< std::endl;a_entry.set_text("8");}void Cal::on_button_clicked_9() {std::cout << "9"<< std::endl;a_entry.set_text("9");}void Cal::on_button_clicked_chu() {std::cout << "/"<< std::endl;}void Cal::on_button_clicked_4() {std::cout << "4"<< std::endl;a_entry.set_text("4");}void Cal::on_button_clicked_5() {std::cout << "5"<< std::endl;a_entry.set_text("5");}void Cal::on_button_clicked_6() {std::cout << "6"<< std::endl;a_entry.set_text("6");}void Cal::on_button_clicked_cheng() {std::cout << "*"<< std::endl;}void Cal::on_button_clicked_1() {std::cout << "1"<< std::endl;a_entry.set_text("1");}void Cal::on_button_clicked_2() {std::cout << "2"<< std::endl;a_entry.set_text("2");}void Cal::on_button_clicked_3() {std::cout << "3"<< std::endl;a_entry.set_text("3");}void Cal::on_button_clicked_jian() {std::cout << "-"<< std::endl;}void Cal::on_button_clicked_0() {std::cout << "0"<< std::endl;a_entry.set_text("0");}void Cal::on_button_clicked_dian() {std::cout << "."<< std::endl;}void Cal::on_button_clicked_deng() {std::cout << "="<< std::endl;}void Cal::on_button_clicked_jia() {std::cout << "+"<< std::endl;}。

DELPHI计算器

DELPHI计算器

unlt Unlt2;lnterfaceusesWlndows, Messages, SysUtlls, Varlants, Classes, Graphlcs, Controls, Forms, Dlalogs, StdCtrls;typeTForm1 = class(TForm)one: TButton;two: TButton;three: TButton;four: TButton;flve: TButton;slx: TButton;seven: TButton;elght: TButton;nlne: TButton;Button10: TButton;Button11: TButton;Button12: TButton;Button13: TButton;Edlt1: TEdlt;Button14: TButton;Button15: TButton;Button16: TButton;zore: TButton;polnt: TButton;Button1: TButton;procedure oneCllck(Sender: TObject);procedure twoCllck(Sender: TObject);procedure threeCllck(Sender: TObject);procedure fourCllck(Sender: TObject);procedure flveCllck(Sender: TObject);procedure slxCllck(Sender: TObject);procedure sevenCllck(Sender: TObject);procedure elghtCllck(Sender: TObject);procedure nlneCllck(Sender: TObject);procedure zoreCllck(Sender: TObject);procedure Button1Cllck(Sender: TObject);procedure Button10Cllck(Sender: TObject);procedure Button11Cllck(Sender: TObject);procedure Button12Cllck(Sender: TObject);procedure Button13Cllck(Sender: TObject);procedure Button14Cllck(Sender: TObject);procedure Button16Cllck(Sender: TObject);procedure Button15Cllck(Sender: TObject);procedure polntCllck(Sender: TObject); prlvate{ Prlvate declaratlons }publlc{ Publlc declaratlons }end;varForm1: TForm1;l,ls,q:lnteger;//n,m:lnteger;Edlt1.Text:=lnttostr(m);mq, hao:strlng;n,m,rea:real;lmplementatlon{$R *.dfm}procedure TForm1.oneCllck(Sender: TObject); beglnEdlt1.Text:='';lf mq='1' thenbeglnfor l:=0 to ls dobeglnq:=q*10;end;m:=m+(1 / q);q:=1;ls:=ls+1;Edlt1.Text:=floattostr(m);endelse begln m:=m*10+1;Edlt1.Text:=floattostr(m);end;end;procedure TForm1.twoCllck(Sender: TObject); beglnlf mq='1' thenfor l:=0 to ls dobeglnq:=q*10;end;m:=m+(2 / q);q:=1;ls:=ls+1;Edlt1.Text:=floattostr(m);endelse begln m:=m*10+2;Edlt1.Text:=floattostr(m);end;end;procedure TForm1.threeCllck(Sender: TObject); beglnlf mq='1' thenbeglnfor l:=0 to ls dobeglnq:=q*10;end;m:=m+(3 / q);q:=1;ls:=ls+1;Edlt1.Text:=floattostr(m);endelse begln m:=m*10+3;Edlt1.Text:=floattostr(m);end;end;procedure TForm1.fourCllck(Sender: TObject); beglnlf mq='1' thenbeglnfor l:=0 to ls dobeglnq:=q*10;end; m:=m+(4 / q);ls:=ls+1;Edlt1.Text:=floattostr(m);endelse begln m:=m*10+4;Edlt1.Text:=floattostr(m);end;end;procedure TForm1.flveCllck(Sender: TObject); beglnlf mq='1' thenbeglnfor l:=0 to ls dobeglnq:=q*10;end; m:=m+(5 / q);q:=1;ls:=ls+1;Edlt1.Text:=floattostr(m);endelse begln m:=m*10+5;Edlt1.Text:=floattostr(m);end;end;procedure TForm1.slxCllck(Sender: TObject); beglnlf mq='1' thenbeglnfor l:=0 to ls doq:=q*10;beglnm:=m+(6 / q);q:=1;end;ls:=ls+1;Edlt1.Text:=floattostr(m);endelse begln m:=m*10+6;Edlt1.Text:=floattostr(m);end;procedure TForm1.sevenCllck(Sender: TObject); beglnlf mq='1' thenbeglnfor l:=0 to ls dobeglnq:=q*10;end; m:=m+(7 / q);q:=1;ls:=ls+1;Edlt1.Text:=floattostr(m);endelse begln m:=m*10+7;Edlt1.Text:=floattostr(m);end;end;procedure TForm1.elghtCllck(Sender: TObject); beglnlf mq='1' thenbeglnfor l:=0 to ls dobeglnq:=q*10;end; m:=m+(8 / q);q:=1;ls:=ls+1;Edlt1.Text:=floattostr(m);endelse begln m:=m*10+8;Edlt1.Text:=floattostr(m);end;end;procedure TForm1.nlneCllck(Sender: TObject); beglnlf mq='1' thenbeglnfor l:=0 to ls dobeglnend;m:=m+(9 / q);q:=1;ls:=ls+1;Edlt1.Text:=floattostr(m);endelsebeglnm:=m*10+9;Edlt1.Text:=floattostr(m);end;end;procedure TForm1.zoreCllck(Sender: TObject); beglnlf mq='1' thenbeglnfor l:=1 to ls dobeglnq:=q*10;end;m:=m+(0 / q);q:=1;ls:=ls+1;Edlt1.Text:=floattostr(m);endelse begln m:=m*10+0;Edlt1.Text:=floattostr(m);end;end;procedure TForm1.Button10Cllck(Sender: TObject); beglnn:=m;m:=0;hao:='+';mq:='0'; ls:=0;end;procedure TForm1.Button11Cllck(Sender: TObject); beglnm:=0;hao:='-'; mq:='0';ls:=0;end;procedure TForm1.Button12Cllck(Sender: TObject); beglnls:=0; mq:='0'; n:=m;m:=0;hao:='*';end;procedure TForm1.Button13Cllck(Sender: TObject); beglnls:=0; mq:='0';n:=m;m:=0;hao:='/';end;procedure TForm1.Button14Cllck(Sender: TObject); beglnmq:='0';lf hao='+' thenbeglnEdlt1.Text:=floattostr(n+m);end;lf hao='-' thenbeglnEdlt1.Text:=floattostr(n-m);end;lf hao='*' thenbeglnEdlt1.Text:=floattostr(n*m);end;lf hao='/' thenbeglnlf m=0 thenbeglnshowmessage('除数不可零');exlt;end;rea:=(n/m);Edlt1.Text:=floattostr(rea);end;end;procedure TForm1.Button16Cllck(Sender: TObject); beglnmq:='0';m:=0;n:=0;hao:='0';Edlt1.Text:='';ls:=0;end;procedure TForm1.Button15Cllck(Sender: TObject); beglnm:=m / 10;m:=lnt(m);Edlt1.Text:=floattostr(m);end;procedure TForm1.polntCllck(Sender: TObject); beglnmq:='1';q:=1;end;end.。

利用delphi建立精确计数器

利用delphi建立精确计数器

利用delphi建立精确计数器在delphi中最常用的是timer控件,它的设置和使用都非常方便,理论上它的记时精度可以达到1ms(毫秒)。

但是众所周知的,实际上timer在记时间隔小于50ms之下是精度是十分差的。

它只适用于对于精度要求不太高的场合。

这里作者要介绍的是两种利用windows api函数实现精确记时的方法。

第一中方法是利用高性能频率记数(作者本人的称呼)法。

利用这种方法要使用两个api函数queryperformancefrequency和queryperformancecounter。

queryperformancefrequency函数获得高性能频率记数器的震荡频率。

调用该函数后,函数会将系统频率记数器的震荡频率(每毫秒)保存到一个largeinteger 中。

不过利用该函数在几台机器上做过试验,结果都是1193180。

读者朋友可以在自己的机器上试一下queryperformancecounter函数获得系统频率记数器的震荡次数,结果也保存到一个largenteger中。

很显然,如果在计时中首先使用queryperformancefrequency获得高性能频率记数器每毫秒的震荡次数,然后在计时开始时使用queryperformancecounter函数获得当前系统频率记数器的震荡次数。

在计时结束时再调用queryperformancecounter函数获得系统频率记数器的震荡次数。

将两者相减,再将结果除以频率记数器每毫秒的震荡次数,就可以获得某一事件经过的准确时间。

(次数除以频率等于时间)另外的一种精确记时器的功能是利用多媒体记时器函数(这也是作者的定义,因为这个系列的函数是在winmm.dll中定义并且是为媒体播放服务的)。

实现多媒体记时器首先要使用timesetevent函数建立计时事件。

该函数在delphi中的mmsystem.pas中有定义,定义如下:function timesetevent(udelay, uresolution: uint;lpfunction: tfntimecallback; dwuser: dword; uflags: uint): mmresult; stdcall函数定义中参数udelay定义延迟时间,以毫秒为单位,该参数相当于timer控件的interval 属性。

实验报告(用delphi做一个简易计算器)

实验报告(用delphi做一个简易计算器)

数据库实验报告姓名:学号:专业:院系:实验二、用熟悉Delphi的开发环境,用Delphi设计一个简易的计算器一、实验目的1、练习Delphi中Edit组件和Button组件的使用方法。

2、能实现计算器的基本功能。

3、要求界面的设计具有个性化。

4、提交的程序前面要有分析,中间应有注释。

二、实验分析:在设计的时候,首先考虑其“计算”功能的实现。

可以通过编辑框edit的形式输入要操作的数据,然后通过选择button按键来选择运算方式。

在设计时,我考虑了最基本的“加”“减”“乘”“除”运算,另外加入了“取倒数”以及“求平方”和“求立方”的操作。

当然,这些操作都可以在“乘”“除”运算中实现,只是为了计算更而已。

二:实验步骤1、实验代码:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Label1: TLabel;Edit1: TEdit;Label2: TLabel;Edit2: TEdit;Label3: TLabel;Label4: TLabel;Edit3: TEdit;Button1: TButton;Button2: TButton;Button3: TButton;Button4: TButton;Button5: TButton;Button6: TButton;Button7: TButton;Label5: TLabel;Edit4: TEdit;Label6: TLabel;Label7: TLabel;Edit5: TEdit;Label8: TLabel;Label9: TLabel;Button8: TButton;Button9: TButton;procedure button1click(Sender: TObject);procedure button2click(Sender: TObject);procedure button3click(Sender: TObject);procedure button4click(Sender: TObject);procedure button5click(Sender: TObject);procedure button6click(Sender: TObject);procedure button7click(Sender: TObject);procedure Button8Click(Sender: TObject);procedure button9click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.button1click(Sender: TObject); //第一个button,进行“加”操作varx1,x2,x3:double;beginx1:=strtofloat(edit1.text);x2:=strtofloat(edit2.text);x3:=x1+x2;edit3.text:= floattostr(x3);end;procedure TForm1.button2click(Sender: TObject);//第二个button,进行“减”操作varx1,x2,x3:double;beginx1:=strtofloat(edit1.text);x2:=strtofloat(edit2.text);x3:=x1-x2;edit3.text:= floattostr(x3);end;procedure TForm1.button3click(Sender: TObject);//第三个button,进行“乘”操作varx1,x2,x3:double;beginx1:=strtofloat(edit1.text);x2:=strtofloat(edit2.text);x3:=x1*x2;edit3.text:= floattostr(x3);end;procedure TForm1.button4click(Sender: TObject);//第四个button,进行“除”操作varx1,x2,x3:double;beginx1:=strtofloat(edit1.text);x2:=strtofloat(edit2.text);if (x2<>0)thenbeginx3:=x1/x2;edit3.text:= floattostr(x3);endelse showmessage('除数不能为空或0')end;procedure TForm1.button5click(Sender: TObject);//第五个button,进行“清零”操作varx1,x2,x3,x4,x5:double;beginx1:=strtofloat(edit1.text);x2:=strtofloat(edit2.text);x3:=strtofloat(edit3.text);x4:=strtofloat(edit4.text);x5:=strtofloat(edit5.text);x1:=0;x2:=0;x3:=0;x4:=0;x5:=0;edit1.text:= floattostr(x1);edit2.text:= floattostr(x2);edit3.text:= floattostr(x3);edit4.text:= floattostr(x4);edit5.text:= floattostr(x5);end;procedure TForm1.button6click(Sender: TObject);//第六个button,进行“取倒数”操作varx4,x5:double;beginx4:=strtofloat(edit4.text);if (x4<>0) thenbeginx5:=1/x4;edit5.text:= floattostr(x5);endelse showmessage('请输入非零数字');end;procedure TForm1.button7click(Sender: TObject);//第七个button,进行“取平方”操作varx4,x5:double;beginx4:=strtofloat(edit4.text);x5:=x4*x4;edit5.text:= floattostr(x5);end;procedure TForm1.Button8Click(Sender: TObject);//第八个button,进行“取立方”操作varx4,x5:double;beginx4:=strtofloat(edit4.text);x5:=x4*x4*x4;edit5.text:= floattostr(x5);end;procedure TForm1.button9click(Sender: TObject);//第九个button,如果第一个//编辑框里输入x,第二个编辑框里输入n,可以求出x的n次幂。

delphi的 fmk 例子

delphi的 fmk 例子

Delphi是一种用于创建Windows应用程序的集成开发环境,而FMX (FireMonkey)则是Delphi的一个重要的组件,用于创建跨评台的应用程序,包括Windows、iOS和Android。

1. FMX在Delphi中的作用FMX是FireMonkey框架的简称,它允许开发者使用同一套代码来开发跨评台的应用程序。

这意味着开发者只需要编写一次代码,就可以将其应用到Windows、iOS和Android三个评台上,极大地提高了开发效率。

2. FMX的特点FMX具有许多独特的特点,使其成为开发者的首选工具之一。

FMX提供了丰富的用户界面控件,包括按钮、标签、输入框等,开发者只需将这些控件拖放到界面上,就能够快速构建出美观、易用的用户界面。

FMX支持硬件加速,能够在多种设备上流畅运行,保证了应用程序的性能。

FMX还提供了丰富的动画效果,使应用程序看起来更加生动、引人注目。

FMX是跨评台的,开发者可以轻松地将应用程序发布到不同的评台上,覆盖更多的用户裙体。

3. FMX在Delphi中的应用在Delphi中,使用FMX进行应用程序开发非常简单。

开发者可以通过Delphi的IDE(集成开发环境)来创建新的FMX项目,然后在项目中编写代码、设计界面,最终将应用程序发布到各个评台上。

在开发过程中,可以使用Delphi提供的丰富的类库和组件来简化开发工作,同时也可以利用FMX的特性来实现各种跨评台的功能。

4. FMX的例子下面我们以一个简单的计算器为例,演示如何使用FMX来开发跨评台的应用程序。

步骤一:创建新项目在Delphi中,选择“File” - “New” - “Multi-Device Application”来创建一个新的跨评台项目。

步骤二:设计界面在新建的项目中,使用FMX提供的界面设计工具来设计计算器的界面,包括数字按钮、运算符按钮、结果显示框等。

步骤三:编写代码在设计好界面之后,使用Delphi的Pascal语言来编写计算器的逻辑代码,包括按钮的点击事件、数学运算逻辑等。

delphi实现计算器源码-完整版

delphi实现计算器源码-完整版

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('除数不能为零。

delphi 数学公式解析

delphi 数学公式解析

delphi 数学公式解析摘要:一、引言二、Delphi 简介1.发展历程2.特点与优势三、数学公式解析1.基本概念2.公式表示方法3.常用数学公式四、Delphi 中数学公式实现1.创建公式对象2.设置公式属性3.计算与解析公式五、Delphi 数学公式应用实例1.简单数学计算器2.复杂数学问题求解六、总结正文:一、引言数学公式在科学、工程和日常生活中具有广泛的应用。

随着计算机技术的发展,越来越多的数学计算和问题求解任务可以通过编程实现。

本文将介绍如何使用Delphi 编程语言解析和实现数学公式。

二、Delphi 简介Delphi 是一种高级编程语言,由Borland 公司开发。

自1995 年首次发布以来,Delphi 已经成为许多开发者的首选编程工具。

它具有以下特点和优势:1.易于学习和使用2.高效、快速的开发环境3.强大的数据库支持4.丰富的组件库三、数学公式解析1.基本概念数学公式通常包括变量、运算符、函数、括号等元素。

根据不同的表示方法,公式可以分为文字公式、符号公式和图形公式等。

2.公式表示方法数学公式可以用LaTeX、MathML 和SVG 等格式表示。

这些格式具有良好的可读性和可扩展性,便于在各种场景中使用。

3.常用数学公式本文将重点介绍一些常用的数学公式,如加减乘除、乘方、三角函数、指数函数和对数函数等。

四、Delphi 中数学公式实现1.创建公式对象在Delphi 中,可以使用TFormula 类创建公式对象。

该类提供了丰富的属性和方法,用于设置和计算公式。

2.设置公式属性通过设置公式对象的属性,可以指定公式的表示方法、字体和颜色等。

例如,设置公式对象的Formula 属性为“2^3”,表示计算2 的3 次方。

3.计算与解析公式使用Delphi 内置的公式解析库,可以自动计算和解析公式。

例如,将公式对象应用于一个数值,可以得到公式的结果。

五、Delphi 数学公式应用实例1.简单数学计算器通过使用Delphi 和TFormula 类,可以轻松实现一个简单的数学计算器。

Delphi实现小计算器源码

Delphi实现小计算器源码

//source源码unit Unit2;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Buttons;typeTForm2 = class(TForm)soleplate: TPanel;nu1: TSpeedButton;nu2: TSpeedButton;nu3: TSpeedButton;op1: TSpeedButton;nu4: TSpeedButton;op2: TSpeedButton;nu7: TSpeedButton;nu8: TSpeedButton;nu9: TSpeedButton;display: TPanel;nu6: TSpeedButton;nu0: TSpeedButton;nu10: TSpeedButton;op5: TSpeedButton;nu5: TSpeedButton;op3: TSpeedButton;op4: TSpeedButton;procedure FormCreate(Sender: TObject);procedure nu1Click(Sender: TObject);procedure op1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm2: TForm2;Tign:Word;a,b:Real;q:Boolean;implementation{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);beginTign :=0;a:=0;b:=0;q:=False;end;procedure TForm2.nu1Click(Sender: TObject);beginif Form2.Tag=0 thendisplay.Caption:=display.Caption+(Sender as TSpeedButton).Caption else beginif Tag=10 thendisplay.Caption:='0'elsedisplay.Caption:=(Sender as TSpeedButton).Caption;Form2.Tag:=0;end;end;procedure TForm2.op1Click(Sender: TObject);beginForm2.Tag:=1;if q thenbegina:=StrToFloat(display.Caption);q:=not q;endelsebeginb:=StrToFloat(display.Caption);case Tign of0:display.Caption:=Format('%g',[a+b]);1:display.Caption:=Format('%g',[a-b]);2:display.Caption:=Format('%g',[a*b]);3:if b<>0thendisplay.Caption:=Format('%g',[a/b])elsebeginShowMessage('除数不能为0!');display.Caption;Format('%g',[a]);q:=False;end;4:beginb:=0;q:=False;end;end;a:=StrToFloat(display.Caption);end;Tign:=(Sender as TSpeedButton).Tag;end;end.//------------------------------------------------------------------------------- //form源码object Form2: TForm2Left = 0Top = 0Caption = #35745#31639#22120ClientHeight = 442ClientWidth = 537Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11 = 'Tahoma'Font.Style = []OldCreateOrder = FalseOnCreate = FormCreatePixelsPerInch = 96TextHeight = 13object soleplate: TPanelLeft = 154Top = 0Width = 249Height = 401TabOrder = 0object nu1: TSpeedButtonTag = 1Left = 32Top = 96Width = 23Height = 22Caption = '1'endobject nu2: TSpeedButton Tag = 2Left = 61Top = 96Width = 23Height = 22Caption = '2'OnClick = nu1Click endobject nu3: TSpeedButton Tag = 3Left = 96Top = 96Width = 23Height = 22Caption = '3'OnClick = nu1Click endobject op1: TSpeedButton Left = 136Top = 96Width = 23Height = 22Caption = '+'OnClick = op1Click endobject nu4: TSpeedButton Tag = 4Left = 32Top = 124Width = 23Height = 22Caption = '4'OnClick = nu1Click endobject op2: TSpeedButton Tag = 1Left = 136Top = 124Width = 23Height = 22Caption = '-'endobject nu7: TSpeedButton Tag = 7Left = 32Top = 152Width = 23Height = 22Caption = '7'OnClick = nu1Click endobject nu8: TSpeedButton Tag = 8Left = 61Top = 152Width = 23Height = 22Caption = '8'OnClick = nu1Click endobject nu9: TSpeedButton Tag = 9Left = 96Top = 152Width = 23Height = 22Caption = '9'OnClick = nu1Click endobject nu6: TSpeedButton Tag = 6Left = 96Top = 124Width = 23Height = 22Caption = '6'OnClick = nu1Click endobject nu0: TSpeedButton Left = 32Top = 180Width = 23Height = 22Caption = '0'endobject nu10: TSpeedButton Tag = 10Left = 61Top = 180Width = 23Height = 22Caption = '.'endobject op5: TSpeedButton Tag = 4Left = 96Top = 180Width = 23Height = 22Caption = '='OnClick = op1Click endobject nu5: TSpeedButton Tag = 5Left = 61Top = 124Width = 23Height = 22Caption = '5'OnClick = nu1Click endobject op3: TSpeedButton Tag = 2Left = 136Top = 152Width = 23Height = 22Caption = '*'OnClick = op1Click endobject op4: TSpeedButton Tag = 3Left = 136Top = 180Width = 23Height = 22Caption = '/'endobject display: TPanelLeft = 8Top = 16Width = 233Height = 41Alignment = taRightJustifyBorderStyle = bsSingleColor = clHighlightTextParentBackground = FalseTabOrder = 0endendend。

delphi分子分母计算

delphi分子分母计算

以下是用Delphi实现分数的分子和分母计算:```pascalprogram FractionCalculator;{$APPTYPE CONSOLE}usesSysUtils;typeTFraction = recordnumerator: Integer;denominator: Integer;end;varfraction: TFraction;beginWriteLn('Enter the numerator: ');ReadLn(fraction.numerator);WriteLn('Enter the denominator: ');ReadLn(fraction.denominator);WriteLn('The fraction is: ', fraction.numerator, '/', fraction.denominator);WriteLn('The reduced fraction is: ', ReduceFraction(fraction));end.function ReduceFraction(fraction: TFraction): TFraction; vargcd: Integer;begingcd := GCD(fraction.numerator, fraction.denominator); fraction.numerator := fraction.numerator div gcd;fraction.denominator := fraction.denominator div gcd; Result := fraction;end;```在这个程序中,我们定义了一个记录类型TFraction,用于存储分数的分子和分母。

然后,我们通过ReadLn函数从用户那里获取分子和分母的值,并打印出原始分数和简化后的分数。

编写相应的Delphi程序分别实现以下科学计算功能

编写相应的Delphi程序分别实现以下科学计算功能

一、编写相应的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.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

unit Cals;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Menus, StdCtrls;typeTForm1 = class(TForm)mm1: TMainMenu;N1: TMenuItem;S1: TMenuItem;S2: TMenuItem;edt1: TEdit;Button1: TButton;Button2: TButton;Button3: TButton;Button4: TButton;Button5: TButton;Button6: TButton;Button7: TButton;Button8: TButton;Button9: TButton;Button11: TButton;Button12: TButton;Button13: TButton;Button14: TButton;Button15: TButton;Button16: TButton;Button18: TButton;Button19: TButton;Button20: TButton;Button21: TButton;Button22: TButton;Button23: TButton;Button25: TButton;Button26: TButton;Button27: TButton;Button28: TButton;Button29: TButton;Button30: TButton;edt2: TEdit;procedure Button19Click(Sender: TObject);procedure Button26Click(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button20Click(Sender: TObject);procedure Button21Click(Sender: TObject);procedure Button12Click(Sender: TObject);procedure Button13Click(Sender: TObject);procedure Button14Click(Sender: TObject);procedure Button5Click(Sender: TObject);procedure Button6Click(Sender: TObject);procedure Button7Click(Sender: TObject);procedure Button29Click(Sender: TObject);procedure Button30Click(Sender: TObject);procedure Button22Click(Sender: TObject);procedure Button15Click(Sender: TObject);procedure Button8Click(Sender: TObject);procedure Button27Click(Sender: TObject);procedure Button28Click(Sender: TObject);procedure Button9Click(Sender: TObject);procedure Button23Click(Sender: TObject);procedure UpdateDisplay();procedure Calculate();procedure OnOperandInput(a: Integer);procedure edt1KeyPress(Sender: TObject; var Key: Char);procedure FormCreate(Sender: TObject);procedure Button16Click(Sender: TObject);procedure Button4Click(Sender: TObject);procedure Button11Click(Sender: TObject);procedure Button18Click(Sender: TObject);procedure Button25Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;typeOperator = (OpNone,OpAdd,OpSubtract,OpMultiply,OpDivide);//定义枚举用以标识运算符CalcError = (ErrNone,ErrDivideByZero); //定义枚举用以标识当前运算状态varForm1: TForm1;m_operator : Operator = OpNone; //定义枚举变量 m_operator 用以标识当前运算符m_newsign : Boolean = False; //标记是否输入新的操作数:1是,0否m_realsign : Boolean = False; //标记是否输入小数: 1是,0否 m_operand : Real = 0; //存储当前输入的数m_errorState : CalcError = ErrNone; // 定义枚举变量m_errorState 用以标识当前运算状态m_accum : Real; //存储当前的计算处理结束—>操作数m_coff : Real = 0.1; //小数输入时的系数m_memory : Real = 0; // 使用内存中存储的数字implementation{$R *.dfm}uses StrUtils;procedure TForm1.FormCreate(Sender: TObject);beginedt1.Text := '0';end;procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);beginif not (key in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', #8]) thenkey := char(0);end;//Backspaceprocedure TForm1.Button1Click(Sender: TObject);beginif m_operand = 0 then edt1.Text := '0'elseedt1.Text := Copy(edt1.Text,1,Length(edt1.Text) - 1);if edt1.Text = '' then edt1.Text := '0';m_operand := StrToFloat(edt1.Text);UpdateDisplay();end;//CEprocedure TForm1.Button2Click(Sender: TObject);beginm_operand := 0;UpdateDisplay();end;//Cprocedure TForm1.Button3Click(Sender: TObject);beginm_operator := OpNone;m_operand := 0;m_accum := 0;m_realsign := False;m_errorState := ErrNone;m_coff := 0.1;m_newsign := False;UpdateDisplay();end;//处理数字输入procedure TForm1.OnOperandInput(a: Integer);begin//判断是否输入新的数字,1-是 0-否if not m_newsign then m_operand := 0;//判断是否是小数输入,1-是 0-否if not m_realsign then m_operand := m_operand * 10 + (a) elsebeginm_operand := m_operand + a * m_coff;m_coff := m_coff * 0.1;end;m_newsign := True;UpdateDisplay();end;//计算处理函数 OpAdd,OpSubtract,OpMultiply,OpDivide procedure TForm1.Calculate();beginif m_newsign = True thenbegin//如果没有计算符就直接将m_operand值赋予m_accumif m_operator = OpNone thenm_accum := m_operand//否则先按计算符进行计算操作再值赋予m_accumelse if m_operator = OpAdd thenm_accum := m_accum + m_operandelse if m_operator = OpSubtract thenm_accum := m_accum - m_operandelse if m_operator = OpMultiply thenm_accum := m_accum * m_operandelse if m_operator = OpDivide thenbeginif m_operand = 0 then m_errorState := ErrDivideByZero elsem_accum := m_accum / m_operand;endend;m_newsign := False;m_realsign := False;m_coff := 0.1;UpdateDisplay();end;//处理显示procedure TForm1.UpdateDisplay();var m_temp : Real;beginif m_errorState <> ErrNone thenedt1.Text := '除数不能为零'elsebeginif m_newsign then m_temp := m_operandelse m_temp := m_accum;//edt1.Text := Format('%d',[m_temp]);edt1.Text := FloatToStr(m_temp);end;end;//数字0~9procedure TForm1.Button26Click(Sender: TObject);beginOnOperandInput(0);end;procedure TForm1.Button19Click(Sender: TObject);beginOnOperandInput(1);end;procedure TForm1.Button20Click(Sender: TObject); beginOnOperandInput(2);end;procedure TForm1.Button21Click(Sender: TObject); beginOnOperandInput(3);end;procedure TForm1.Button12Click(Sender: TObject); beginOnOperandInput(4);end;procedure TForm1.Button13Click(Sender: TObject); beginOnOperandInput(5);end;procedure TForm1.Button14Click(Sender: TObject); beginOnOperandInput(6);end;procedure TForm1.Button5Click(Sender: TObject); beginOnOperandInput(7);end;procedure TForm1.Button6Click(Sender: TObject); beginOnOperandInput(8);end;procedure TForm1.Button7Click(Sender: TObject); beginOnOperandInput(9);end;// +procedure TForm1.Button29Click(Sender: TObject); beginCalculate();m_operator := OpAdd;end;// -procedure TForm1.Button22Click(Sender: TObject); beginCalculate();m_operator := OpSubtract;end;// *procedure TForm1.Button15Click(Sender: TObject); beginCalculate();m_operator := OpMultiply;end;// /procedure TForm1.Button8Click(Sender: TObject); beginCalculate();m_operator := OpDivide;end;// =procedure TForm1.Button30Click(Sender: TObject); beginCalculate();m_operator := OpNone;end;// +/-procedure TForm1.Button27Click(Sender: TObject); beginm_operand := m_operand * (-1);UpdateDisplay();end;// .procedure TForm1.Button28Click(Sender: TObject); beginm_realsign := True;UpdateDisplay();end;//开平方procedure TForm1.Button9Click(Sender: TObject);beginm_operand := Sqrt(m_operand);UpdateDisplay();end;//求倒procedure TForm1.Button23Click(Sender: TObject);beginif m_operand = 0 then m_errorState := ErrDivideByZero elsem_operand := 1 / m_operand;UpdateDisplay();end;// %procedure TForm1.Button16Click(Sender: TObject);var i : Integer;begin//??????m_operand := m_operand / 100;UpdateDisplay();end;// 计算器有关内存操作// 'MC'的操作,将内存清0procedure TForm1.Button4Click(Sender: TObject);beginm_memory := 0;edt2.Text := '';//ShowMessage(FloatToStr(m_memory));end;// 'MR'的操作,将存储器中的信息输出procedure TForm1.Button11Click(Sender: TObject);beginm_newsign := True; //很关键m_operand := m_memory;UpdateDisplay();//ShowMessage(FloatToStr(m_memory));end;// 'MS'的操作,将当前文本框内容保存入内存,显示'M'procedure TForm1.Button18Click(Sender: TObject);beginif m_operand <> 0 thenbeginedt2.Text := ' M';m_memory := m_operand;//ShowMessage(FloatToStr(m_memory));end;end;// 'M+'的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器procedure TForm1.Button25Click(Sender: TObject);beginm_memory := m_memory + m_operand;//ShowMessage(FloatToStr(m_memory));end;end.。

相关文档
最新文档