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

google有计算功能的。
大家在搜索栏键入公式就有结果了。
而且非常强大。
 
to hotyei:
现在想不来了,跟我们说一下另外的3,4种吧
 
此贴2003-11-11日结,大家请踊跃。
 
你好,来混混分!
 
to kfzd
那个类型库导入后,没看到这个类型啊TScriptControl?
不要骗人啊
 
以上两种方法最好
 
以上的那2个啊,sql的?那个如果表是空的就没折了.结果都没的.
用了那个ole的好像非常厉害,那个类型库的却是没有的啊?
 
sorry,sorry
俺写的类型库有错误,应该是"Microsoft script control 1.0"
--------------
我第一次引入的是microsoft VBscript Regular Expressions 5.5,
后来发现不对就引入了microsoft script control 1.0
--------------
发帖子的时候就写错了。
再次致歉
 
果然看到了,真是高手啊,厉害厉害,佩服,佩服,能给我个email,或者msn吗?
我向你学习,请教....
 
使用SQL的这种方式很方便的,

但是问题是:在前面给出的资源中,并没有说明有数据库的哦
不过对于D6/D7的标准环境,可以使用paradox的本地库,我测试过了,也是可以进行计算的
但是在进行处理的时候,需要稍微的注意一下处理的技巧。
 
前面的方法都被提出来了,还有一种方法,就是直接利用第三方控件TParser,好像是德国
人编写的,我也忘了在哪个网站下载的,大家自己去搜索一下吧!
 
还有一种方法,就是用qrreport的qrexpr控件。

我的例子程序如下
共有两个文件

unit1.pas
------------------------
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, QuickRpt, QRCtrls, qrexpr,ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses unit2;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
QuickReport2.QRExpr1.Expression := edit1.Text;
QuickReport2.PreviewModeless;
QuickReport2.Hide;
BringtoFront;
end;

end.

------------------------

unit2.pas
------------------------
unit Unit2;

interface

uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
StdCtrls, ExtCtrls, Forms, QuickRpt, QRCtrls;

type
TQuickReport2 = class(TQuickRep)
TitleBand1: TQRBand;
QRExpr1: TQRExpr;
procedure QRExpr1Print(sender: TObject; var Value: String);
private

public

end;

var
QuickReport2: TQuickReport2;

implementation
uses unit1;
{$R *.DFM}

procedure TQuickReport2.QRExpr1Print(sender: TObject; var Value: String);
begin
form1.edit2.Text := value;
end;

end.
------------------------
如果哪位有qrreport的源代码,请给俺看看,这里面一定有一个单独
的计算表达式的函数,这样就会更简单了


 
我记得javescript有一个函数能进行四则运算
 
大家努力,我数了一下,其实一共最少可以有七种方法。稍候我会公布答案的。努力啊…………
 
看来还是大富翁的高手多点,这条信息我同样在CSDN发布了,还没一个人能真正写出答案来。
 
学习中。。。。。
 
来自:hotyei, 时间:2003-11-9 14:38:00, ID:2282472
大家努力,我数了一下,其实一共最少可以有七种方法。稍候我会公布答案的。努力啊…………

难道还有更厉害的答案?
我觉得用ole和类型库导入的2个答案应该最厉害了吧.
调用calc.exe的估计就没什么了吧.而且不符合题目要求的.
用sql的想法也不错,我怎么就没想到呢?:(
期待更厉害答案中. delphi的直接函数?d5应该没有吧,难道到,d6,d7增加了?
 
这个帖子发的很好,不错,学习中
 
最簡單的方法,引用QuickReport中的QRxpr單元.
uses
QRExpr;

function CalculateExpression(const Str:string):Double;
begin
with TQREvaluator.Create do
try
Prepare(Str);
Result:=StrToFloat(AsString);
finally
Free;
end;
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
顶部