文本描述转化为算术表达式的问题(100分)

  • 主题发起人 主题发起人 yeszhang
  • 开始时间 开始时间
Y

yeszhang

Unregistered / Unconfirmed
GUEST, unregistred user!
比如表中计算方式字段这么描述:((长度;加上;宽度);乘以;5);除以;重量

那窗体上有edtLength,edtWidth,edtWeigth;

怎么样写才能把几个edt按照上面的描述得出结果??描述的格式我们可以指定
 
直接写成:edt.width:=指定值
 
哈哈 同意沙发!!
 
to happy_hsr:
不大明白你的意思

((长度;加上;宽度);乘以;5);除以;重量 :这个相当于计算方式

而edtLength,edtWidth,edtWeigth的内容根据实际客户输入的数字来确定的。

根据不同的产品类型,计算方式都不一样,但是都是这三个edt的值参与计算。
 
LZ问题没有描述清楚,按我的理解,沙发的回答可行
也就是程序运行时提示用户输入长度,宽度,高度的值,然后直接赋给edtLength等,在程序中使用变量进行运算,根据不同的产品类型使用不同的算术式,大概就是这个意思~
LZ如果想得到理想的答案,请首先整理自己的思路,明白要做的是什么并表达清楚,我们才能帮你~
 
((长度;加上;宽度);乘以;5);除以;重量 :这个相当于计算方式

而edtLength,edtWidth,edtWeigth的内容根据实际客户输入的数字来确定的。


举例吧:如果用户输入edtLength.text:=5; edtWidth.text:=6; edtWeigth.text=7;

而设置的计算方式是:
((长度;加上;宽度);乘以;5);除以;重量
则程序计算出的结果应该是:
((5+6)*5)/7;

如果设置的计算方式是:
(长度;加上;宽度)
那么程序计算结果是:
5+6

这个应该描述清楚了吧!
 
问题关键在于:
怎么分析

((长度;加上;宽度);乘以;5);除以;重量

得出:
Result:=((StrToFloat(edtLength.text)+StrToFloat(edtWidth.text))*5)/StrToFloat(edtWeight.text);
 
1.用MS的SCRIPTCONTROL来解决就行了
procedure TForm1.Button1Click(Sender: TObject);
var
v: variant;
begin
v := CreateOleObject('ScriptControl');
try
v.language := 'VBScript';
edit1.text := v.eval(带入你的计算公式);
finally
v := unassigned;
end;
end;

2.也可以用SQL来解决:
SELECT 计算公式 FROM 表名
 
试试这一个,在大富翁上学的,和楼上几乎一样
uses ComObj

在edit1.text 输入 (2+3)*4/3

procedure TFrmMain.BitBtn7Click(Sender: TObject);
var
vScript: Variant;
str:string;
begin
str:=edit1.text;
vScript:=CreateOleObject('ScriptControl');
vScript.Language := 'JavaScript';
str:=vScript.Eval(str);
showmessage(str);
end;
 
对这个字符串进行解析,替换相应汉字
建议你在写计算式的时候换成数学运算符号,
 
to hongxing_dl,
第一个方式我不大明白:'VBScript'能解析
((长度;加上;宽度);乘以;5);除以;重量
便成:
Result:=((StrToFloat(edtLength.text)+StrToFloat(edtWidth.text))*5)/StrToFloat(edtWeight.text);????不大可能。

第二个就不是什么方式了。我的计算方式肯定放在sql的某个表中
 
To:yidianhong,hongxing_dl
谢谢。分给你了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部