你能否善用身边的一切资源?请大家进来测试一下吧!顺便散分。 (300分)

lhc4000 的答案正确,得分。
大家继续啊,方法多得很呢。
 
楼上办法,高!
 
RxLib、DevExpressBar,记得这两套控件之一里有计算器,
 
lhc4000:利害利害
 
94a,Rxlib好像带的有计算器呀!调用就可以了
 
haoxiang buxing a
 
haoxiang buxing a
 
to lich:
在面试为保证结果正确,30分钟去做是不行的。
 
能!
调用windows的也可以,写也可以。。。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMenu, StdCtrls;
type
TFrmcounter = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Frmcounter: TFrmcounter;
temp1: string;
temp2: real;
n: integer;
implementation

{$R *.dfm}

procedure TFrmcounter.Button7Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'1'
end;
procedure TFrmcounter.Button9Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'2'
end;
procedure TFrmcounter.Button15Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'3'
end;
procedure TFrmcounter.Button2Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'4'
end;
procedure TFrmcounter.Button3Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'5'
end;
procedure TFrmcounter.Button4Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'6'
end;
procedure TFrmcounter.Button11Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'7'
end;
procedure TFrmcounter.Button6Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'8'
end;
procedure TFrmcounter.Button5Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'9'
end;
procedure TFrmcounter.Button10Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'0'
end;

procedure TFrmcounter.Button14Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'00'
end;
procedure TFrmcounter.Button8Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'.'
end;
procedure TFrmcounter.Button19Click(Sender: TObject);
begin
edit1.Clear
end;
procedure TFrmcounter.Button20Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'%'
end;
procedure TFrmcounter.Button12Click(Sender: TObject);
begin
n:=1;
temp1:=edit1.text;
edit1.clear;
end;
procedure TFrmcounter.Button18Click(Sender: TObject);
begin
case n of
1:temp2:=strtofloat(temp1)+strtofloat(edit1.text);
2:temp2:=strtofloat(temp1)-strtofloat(edit1.text);
3:temp2:=strtofloat(edit1.text)*strtofloat(temp1);
4:if strtofloat(edit1.text)=0 then
begin
showmessage('除数为0!');
exit;
end
else
temp2:=strtofloat(temp1)/strtofloat(edit1.text);
end;
edit1.text:=floattostr(temp2);
end;
procedure TFrmcounter.Button1Click(Sender: TObject);
begin
n:=2;
temp1:=edit1.text;
edit1.clear;
end;
procedure TFrmcounter.Button13Click(Sender: TObject);
begin
n:=3;
temp1:=edit1.text;
edit1.clear;
end;
procedure TFrmcounter.Button16Click(Sender: TObject);
begin
n:=4;
temp1:=edit1.text;
edit1.clear;
end;
end.
 
to kevin1779:
这是一个标准的计算器了,但不能计算公式。;(
 
也搞定,不过公式不能错啊,ADOQuery1随便连接一个数据库。[:)]

procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
SQL.Clear;
SQL.Text := 'select ' + Edit1.Text;
Open;
Edit2.Text := Fields[0].AsString;
Close;
end;
end;
 
to pyzfl:
你也算答对了,不过这样的话可以更好:
procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
SQL.Clear;
SQL.Text := 'select ' + Edit1.Text;
try
Open;
Edit2.Text := Fields[0].AsString;
except
ShowMessage('公式错误!');
end;
Close;
end;
end;
 
高高高让我欢喜让我忧:
怎么我没想到?
 
引入类型库"microsoft VBscript Regular Expressions 5.5"
unit1.pas
---------------------
procedure TForm1.Button1Click(Sender: TObject);
var ot: TScriptControl;
begin
ot := TScriptControl.Create(nil);
OT.Language := 'VBSCRIPT';
edit2.Text := ot.Eval(edit1.Text);
end;
---------------------
 
历害呀。
 
最少还有四五种方法,大家努力啊。
 
我用的是SQL计算功能
好象上面已经说过了
try
query1.close;
if trim(edit1.text)='' then exit;
query1.sql.text:='select '+Edit1.Text+' from Table where 1<>1';
query1.open;
edit2.text:=query1.fields[0].asstring;
except
//输入非法
end;
不过借助控件更好哦……
 
大开眼界.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
889
DelphiTeacher的专栏
D
顶部