材料管理系统中发现的问题

来源:互联网 发布:软件开发成本 人月 编辑:程序博客网 时间:2024/04/29 02:38

笔者前几年用DELPHI7开发一套材料管理系统,数据库用的是delphi自带的Paradox,最近程序升级,发现了一些问题,总结如下:

一、空数据库中Summary表的结构和开发用的表结构不一致。这种不一致可能是数据库结构在开发中改动过了,但没记录,也没修改打包要用的空数据库中的表结构,导致的问题就是安装后的程序运行汇总功能时才发现问题。

二、打包BDE的问题。BDE打包不需要InstallShield2010的MergeModule功能,只需要把BDE中必须的几个文件打包到工程中,然后在注册表中要注册2个值:

 BDE的以下DLL是必须的:
1. Blw32.dll:语言驱动函数库。
2. Idapi32.dll:BDE基本函数库。
3. Idr20009.dll:错误信息库。
4. Idsql32.dll:SQL查询驱动程序函数库。
5. Idpdx32.dll:Paradox数据库驱动程序函数库。
6. idbat32.dll: idbat32.dll:批操作驱动程序函数库。
7. bantam.dll: 语言驱动函数库。

另外还有3个资源文件也是必须的:

1、charset.cvb

2、fareast.btl

3、usa.btl
上述函数可以放在任何目录下,当必须在注册表中指定这些函数所在的目录。当然也与你生产的可执行程序放在同一个目录下,这样就可以不在注册表中注册目录。

除了需要上述的DLL,如果开发的工具中使用了数据库别名,则还需要一个BDE配置文件Idapi32.cfg,其目录必须在注册表中指定。为了避免修改注册表,达到纯绿色工具的目的,应避免在上层应用程序中使用数据库别名。而直接指定数据库的目录:具体方法是在程序启动时动态指定TQuery连接的数据库。代码如下:
form1.MainQuery.DatabaseName:=extractfiledir(application.exename)+'\database';
上述示例数据库放在应用程序所在目录下的database目录下。

上述就完成了一个纯绿色的基于数据库应用的应用程序。

数据驱动程序所在目录的设置:
HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\DLLPATH(字符串值)

在InstallShield2010中注册表的值是[INSTALLDIR]BDE\

注意两点:

        1、[INSTALLDIR]BDE\代表应用安装的路径下BDE目录,当然可以指定其他目录

        2、[INSTALLDIR]和BDE之间没有'\'

语言驱动程序所在目录的设置:
HKEY_LOCAL_MACHINE\Software \Borland\BLW32\BLAPIPATH(字符串值)

三、win7系统下发现的问题:

      1、如果程序运行时需要修改注册表、生成临时文件、修改文件等,都需要以管理员权限运行。

      2、win7系统下的*.dfm文件源码似乎会和xp系统不一致。 发现在win7下的源码文件拷贝到xp系统下后,所有dfm文件的末尾都增加了一串不能正常显示的字符串,将这些字符删掉即可。

      3、形如:‘2011-09-27’的字符串转成日期格式时会报错,改成'2011/09/27'格式,错误消除。但XP系统下,两种格式都没问题

使用TFormatSettings来就OK了
var
t:TDateTime;
fs:TFormatSettings;
begin
fs.ShortDateFormat:='yyyy-mm-dd';
fs.DateSeparator:='-';

t := StrToDate('2010-01-01',fs);//, fs.LongDateFormat);
ShowMessage('01/01/2075 = '+DateTimeToStr(t,fs));

t:TDateTime;
fs:TFormatSettings;



原创粉丝点击