unit1.~pas
来自「本程序能实现输入字符串类型而可以用数学公式计算出结果。」· ~PAS 代码 · 共 94 行
~PAS
94 行
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,comobj, StdCtrls;//新加comobj
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function calc(const expression:string):single;
var
sc:OleVariant;
begin
try//finally
try //except
sc:=CreateOleObject('MSScriptControl.ScriptControl.1');
sc.language:='JavaScript';
result:=Strtofloat(sc.eval(expression));
except
on E:Exception do
Application.MessageBox(PChar(E.Message),'错误');
else
showmessage('未知错误');
end;
finally
begin
//showmessage('请重新输入'); //可以用,但不合适
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
try
edit2.Text :=floattostr(calc(edit1.Text));
edit1.SetFocus ;
except
showmessage('错误的输入字符串!');
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.Text :='请在此输入计算公式';
edit2.Text :='';
edit1.TabOrder:=0;
end;
//按ENTER键始终不能将其EDIT1选中。而用BUTTON1 CLICK就行。
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=vk_return) then
begin
try
edit2.Text :=floattostr(calc(edit1.Text));
edit1.SetFocus ;
form1.SelectFirst ;
//showmessage('yun xing dao zhe le');
finally
//edit1.SetFocus ;
form1.SelectFirst ;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?