Delphi带包编译问题

chenzhuo 2009-05-01 03:35:59
系统使用了主程序+运行包+带包编译DDL的框架.

主程序和DLL都带包便宜:共享Application

由于在自定义控件中使用了BDE的TQuery所以
在自定义包里requires了bdertl包,而bdertl包含了DBTables.pas文件

问题:
现在想修改DBTables.pas原文件中的返回错误的两个函数,将其返回的错误信息
汉化,我将DBTables.pas文件复制到我的自定义控件的路径下,并在Library path
中设置其路径下优先于$(DELPHI)\Lib,但是编译后,达不到预期效果.
如果使用不带包编译的时候则没问题.

引起该问题的原因分析:
1. 由于bdertl是系统包,不能被重编译,而我的系统又要求带包编译,所以当要使用
到DBTables.pas的时候,系统还是连接到bdertl70.bpl,所以提示内容还是英文.
2. 不带包编译的话,由于编译的时候,会自动连接到我修改过的DBTables.pas,所以
能达到效果.

尝试过的方法:
1. 将bdertl另存为其他名字,然后编译,例如bdertl_ex.bpl,自定义包去掉原来的
bdertl,requires bdertl_ex.dcp.
出现问题,由于BDE只有dcu没有pas,所以在安装控件的时候会提示BDE已经存在于bdertl中了,
没办法安装.
2.将修改过的DBTables.pas生成dcu后,替换原来$(DELPHI)\Lib下的DBTables.dcu文件,
重编译,失败.

问题:
1. 是否bdertl.bpl是不会被重新编译的?
2. 如果另外生成一个bdertl_ex.bpl的话,怎么避免与原来的bdertl冲突,即不会报bdertl已经包含了BDE.dcu了.
3. 是否有其他办法来解决,例如能不能在应用了DBTables.pas的地方加入编译指令,告诉编译器,
如果遇到应用DBTables.pas时,直接连接到DBTables而不要去包bdertl中找.

声明:
1. 请不要说什么BDE不好,使用ADO之类的.
2. 希望能有其他的方案,但是要满足要求,例如在TQuery的OnxxxError事件中写代码,try之类的,但这些都存在一些问题,
例如返回一个错误99999 is not a valid value for field '编码'.The allowed range is 0 to 19999
我要如何翻译成:输入的数值99999并不匹配[编码]的取值范围. 允许的范围应该是从0到19999
这些如果修改原代码的情况下,只要DBConsts中的SBcdFieldRangeError的相关内容汉化则行,但是如果通过try之类的话
我们得到的可能只有一串错误信息或错误代码.


期待答案,欢迎讨论.
...全文
610 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenzhuo 2009-05-06
  • 打赏
  • 举报
回复
最终使用了修改dbrtl.bpl里面的资源字符串.也算是一种解决方案.
chys3584 2009-05-04
  • 打赏
  • 举报
回复
直接用第三方软件把那两个字符串修改了省事儿.
chenzhuo 2009-05-04
  • 打赏
  • 举报
回复
1.包不能被重新编译
2.是写在resourcestring中,可以考虑这种方案,今晚回去试试!
Harryfin 2009-05-03
  • 打赏
  • 举报
回复
1、必须重新编译包才会有效的,因为最后运行时是看包中的内容,而不是看本地源文件;而且在带包情况下,如果这个单元在DCP里已被引用,编译器是根本不会去理你那个源文件的。
2、看看这几个字符串是否以资源的形式进行保存(resourcestring),是的话可以从修改资源入手(Delphi大部份提示信息应该都是资源)
chenzhuo 2009-05-02
  • 打赏
  • 举报
回复
DBTables.pas是属于bdertl70.bpl的,这个包好象是不能够被重编译的。
starluck 2009-05-02
  • 打赏
  • 举报
回复

带包编译了,与修改单元放到本地就没有什么关系了。你应该将这个单元的BPL重新编译才行。
汉化说明 与许多初学者一样,我在开始学习Delphi时,面对全英文的界面,很是不习惯。在Delphi5.0时就开始对Delphi进行汉化。但效果并不明显,也就没好意思拿出来。但心中总是感到有些遗憾,为什么Delphi这样好的编辑工具,始终不推出简体中文版呢? 一直等到Delphi7.0时,Smallfish终于等不住了,为了Delphi在华夏大地上的传播与推广,SmallFish决定自己动手,汉化出真正属于中国人的简体中文Delphi程序开发工具。 SmallFish通过几个星期的艰苦奋战,在Delphi7.06的英文版的基础上,终于推出了现今汉化最好的Delphi7.0简体中文版。 Delphi7资源汉化包的源文件 其中SmallFish汉化的部分是*.bpl、*.exe及其它文件,而Lib中的文件及Source文件夹中的文件是LiWD完成的,我也加到了我的文件夹中,在此表示感谢!为了表示对他劳动的尊重,将他汉化时的文字在后面附加了。 下面,向大家介绍一下使用方法,首先关闭Delphi7.0的运行,打Winsystem文件夹下的所有文件,覆盖到系统目录下(如C:WindowsSystem);然后,将Bin、Lib文件夹下的所有文件覆盖到Delphi安装目录的Bin中。至于Source文件,可以覆盖到相应文件夹中,也可以不做任何操作。 为了减少大家的开支,我将文件的大小尽可能缩小,也不得已使用可执行程序压缩工具对.Exe文件、.Bpl文件进行压缩。但还是很大,请大家原谅。如果想修改,可以以下面的邮件地址向我索取没有压缩的文件,我会抽时间发给你们。 最后,要说明的是,汉化到现在,发现要推出完全汉化的Delphi,以我的精力和能力来说,还要等一定时间。因为需要汉化的资源太多,以典型安装为例,可能需要汉化的文件多达200个左右,而且是都是DELPHI程序,无法借助字典批量翻译,工作量实在巨大。同时随汉化的深入,发现许多要翻译的字符没有把握准确译出,恐怕翻译后让大家更糊涂,加上马一就要毕业答辨,我只好暂时把汉化工作停一下,只是将手头现有的部分拿出来与大家共享,因水平有限,翻译错误在所难免,请不吝指教!以便我日后推出汉化Delphi时,做最后的修正。 我汉化Delphi不是为了出名。没有任何商业目的,不希望出现Delphi简体中文版应用于商业的现象发生,但为了表明大家对我的工作尊重,也不要修改我在可执行文件版本信息中加的一行字-汉化:SmallFish。如果向朋友推广,也不要把我编写的汉化说明删除,我只是想通过这样的一个难得机会,结识更多像我一样酷爱Delphi的网友。 如果你有什么好的建议,请给我发电子邮件电子邮件地址SmallFish@0335.net或LiYuguo@0335.net,我尽量抽时间回答网友的提问。不要向我要Oicq或其它联系方式,恕我不公开。常见问题: 1.为什么汉化Delphi7.0在运行时菜单没有快捷键但按下Alt键后,就有了。能不能改进一下? 答:这是Delphi7.0本身的原因,并不是我汉化资源文件有误,不信你将Delphi原文件覆盖回去试试,一样存在此问题。 2.为什么编译信息一部分是英文,另一部分是中文? 答:这是因为我汉化不完全造成的。 3.什么时候会推出Delphi7.0的其它汉化资源? 答:时间不会太长,只要大家支持。 4.如果我向你的信箱中发送其它控件的汉化请求,能不能帮我完成? 答:如果时间允许,控件好用,我会满足您的要求,但有一个条件,留下您的联系方式,交一个朋友。:)附:网友LiWD原文汉化说明 这是Delphi7的一些资源文件的汉化,是我从Delphi6改编的,由于英文水平有限,错误在所难免,并且有些单元没有汉化,如果你修改或汉化了其他单元,别忘了给我一份! 用Delphi7 打开 Project1.dpr, 进行编译,即可得到相应的dcu文件! 上传:李岚文 QQ:270181856 E_-mail:llw.lz@126.com 曾上传作品:柯龙进销存 希望能给初学Delphi 7的朋友带来帮助 ^_^

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧