表达式计算器
unit Unit_Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Controls, Forms,
Dialogs, Menus, StdCtrls, ComObj, ShellAPI,Clipbrd;
type
TForm_Main = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
Memo1: TMemo;
Memo2: TMemo;
Label1: TLabel;
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure N6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_Main: TForm_Main;
implementation
{$R *.dfm}
function jisuan(S: string): string;
var
vScript: Variant;
begin
vScript := CreateOleObject('ScriptControl');
vScript.Language := 'VBScript';
Result := vScript.Eval(S);
end;
procedure TForm_Main.N3Click(Sender: TObject);
begin //前端显示
N3.Checked := not N3.Checked;
if N3.Checked then
begin
Form_Main.FormStyle := fsStayOnTop;
end
else
begin
Form_Main.FormStyle := fsNormal;
end;
end;
procedure TForm_Main.N5Click(Sender: TObject);
begin //自动复制
N5.Checked := not N5.Checked;
if N5.Checked then
begin
N5.Caption := '复制结果';
end
else
begin
N5.Caption := '复制表达式';
end;
end;
procedure TForm_Main.N1Click(Sender: TObject);
var
S ,S2: String;
begin //计算
if Memo1.Text = '' then
begin
ShowMessage('请输入相关计算式。');
Exit;
end;
S := Memo1.Text ;
S2 := jisuan(S);
Memo1.Text := S+'='+S2;
Memo2.Lines.Add('---------------');
Memo2.Lines.Add(Memo1.Text);
if N5.Checked then
begin //如果自动复制结果
Clipboard.AsText := S2;
Memo2.Lines.Add('结果:'+Clipboard.AsText+' 已复制。');
end
else
begin //自动复制表达式和结果
Clipboard.AsText := Memo1.Text;
Memo2.Lines.Add('结果:'+Clipboard.AsText+' 已复制。');
end;
Memo1.Clear;
Memo1.Text :='';
end;
procedure TForm_Main.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key= 13 then
begin
Key := 0;
N1.Click;
end;
end;
procedure TForm_Main.N6Click(Sender: TObject);
begin //帮助
Application.MessageBox('表达式计算器,作者:圣诞老人'+#13#10+
'1. 输入如:(1+2)*3 可正确计算结果为:9而非7。'+#13#10+
'2. 回车键可直接计算结果。'+#13#10+
'3. 在第一个文本框内输入要计算的表达式,如:(1+2+3+4)*2后,'+#13#10+
' 按回车键即可计算并复制:(1+2+3+4)*2=20到剪切板中。','帮助',64);
end;
end.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix