有关delphi初学的几个问题(50分)

  • 主题发起人 主题发起人 gzxhj
  • 开始时间 开始时间
G

gzxhj

Unregistered / Unconfirmed
GUEST, unregistred user!
我学delphi不久,最近我试着用delphi4编写一个数据库管理程序发现以下几个问题,不知如何处理,请各位帮帮忙。
1. 我用database desktop建了一个Pardox数据库,里面有几个字段:x1,x2,x3,x4分别是数字型,其中计算公式为x4=x1+x2-x3,但在程序中我用如下语句计算时却发现一条记录有错误。
table1.fieldbyname('x4').asfloat:=table1.fieldbyname('x1').asfloat+table1.fieldbyname('x2').asfloat-table1.fieldbyname('x3').asfloat;
比如:
x1=33631.48
x2为空
x3=33631
那么根据公式x4=x1-x2+x3=33631.48+0-33631=0.48
结果却是:0.479999999563
然而我用database desktop另建一个Dbase数据库,计算结果却是0.48,但在database desktop下看pardox数据库时,结果却是0.48。另外我改变x3的值为33600时,结果同样有精确小数位,这是为什么?

2. delphi介绍中讲到,经过delphi编译后的程序可以脱离delphi环境下运行,为什么我编译后的程序却不能运行,就连放到其它目录下都不行,总是认源程序所在的目录,难到还有什么地方设置不对?

3. 我的源程序加起来才30K,为什么编译后的运行文件能有960K之多,有什么方法能让它变瘦些吗?
 
1.好像浮点运算就是有这样的问题,另外,以后千万不要
用x1-x2+x3=0.48 在if或for中来做判断表达式

2。不会吧?讲清楚些,什么样的程序

3。用Aspack之类的东西,可以减少一半尺寸,如果在有Delphi的机器上
运行(比如你自己的机子),可以在Project的Option选项里选
Build with run time library ,这样你的程序就只有几十K了
 
2:请动态建立别名.
先放一Database元件;

DataModule1.Database1.DatabaseName:='你的别名';
DataModule1.Database1.DriverName:='STANDARD';
DataModule1.Database1.Params.Clear;
DataModule1.Database1.Params.Values['Database Name']:=expandfilename('表名.db');
DataModule1.Table1.DatabaseName:='你的别名';
DataModule1.Table1.TableName:='表名.db';
 
1.这是使用浮点数必然存在的问题.
所以如果能用currency,decimetal的化则不要用浮点.
在不然的话也可以用格式化输出来解决.
2.Delphi可以脱离环境,不能脱离环境的是数据库.
你的Paradox数据库需要数据库引擎的支持.
检查一下你的应用程序同数据库是否在同一目录下.
如果在程序中你没有设置数据库的绝对路径的话,
把他们移至别的目录是没有问题的.
除非你在BDE中或程序中设置了别名路径.
3.你的源程序小并不能决定编译后的可执行程序小.
因为你的程序中可能使用了很多控件.
 
应该是数据库程序用到bde.你要用IS 发布程序
 
时间太久,强制结束。 wjiachun
 
后退
顶部