修改源码(100分)

  • 主题发起人 主题发起人 py
  • 开始时间 开始时间
P

py

Unregistered / Unconfirmed
GUEST, unregistred user!
我已修改了一个位于/source/vcl下BORLAND源程序 *.pas文件,
不知该如何作,才能使我所做修改生效.rebuild library?

小宇
 
 这个问题好面熟,
 不过为了100分,还是

将你修改的*.pas文件include到你的项目中,然后rebuild.
 
修改后的*.pas要编译成*.dcu然后放到lib目录里去!
 
py,

两种方法可以使你改过的源程序生效:

1. 将该文件加入到你的 project 中, 运行时既可以生效;
2. 将编译后的 dcu 复制到 lib 目录下, 下次使用时有效

注意事项:
1. 第一种方法较安全可靠, 即使出错也不会影响到系统, 试和调试时使用
2. 要将编译后的 dcu 拷贝到 lib 目录应该十分小心, 如果只是改动了
Implementation 部分则一点问题没有, 如果改动了 interface 部分的话, 应
该看你的 Delphi 版本了; 在 Delphi 3.0 下可能会引起 Delphi 启动不了;
在 Delphi 4.0 C/S 下经过升级后(d4cupd1.exe or d4cupd2.exe)不会出问题;
否则请不要覆盖原有的 dcu;
 
根据不完全统计我在自己家中的机器上安装过31次DELPHI,我购买了2张DELPHI的CD
多数是因为改SOURCE和写奇怪的EXPERT/COMPONENT
答案:
1、建立项目
2、用Project Manager把你改的程序ADD进项目
3、用REBUILD ALL
4、做好原来LIB目录下DCU的备份
5、关闭DELPHI
6、把新的DCU复制到LIB目录覆盖原来的文件
7、启动DELPHI
8、如果有问题则恢复原DCU否则OK!
注:保留原来的DCU文件,当你用DELPHI正常运行一周以上才删除原DCU!
 
sorry,提问时忘记说明,我的环境是C++Builder3.0,
我修改了一个*.pas文件,位于/../cbuilder3/source/vcl下,
仅改动implement段下的一个字符串,请各位不必担心,
将其加入到一个project中,run后生成一个*.dcu文件
将原Forms.dcu改名为*.bak,copy 新forms.dcu到/lib/obj下
再run我的APP,刚才所做修改无效.
 
Have you use BuildAll command?
 
对于C++Builder3.0,修改vcl源代码,只有在下列情况有效:
1.Project的Options的Build with RunTime Packages选项未选中,或是
Packages中没有包含您所修改的vcl的包.
2.将您修改的.pas文件加入Project中。
Build即可有效。

建议您最好不要修改source的vcl,如有不尽人意之处,可另写控件完成。
因为Build with RunTime Packages选项最好选中,最好包括您用到的包.
这样应用程序会精简,程序运行时用到vcl代码时会从DLL中去取,而不是将vcl
信息全包括在执行文档中.符合windows编程思想.
 
1.BCB的源码没有给出其Package的工程,所以不大可能将Source的修改
导入BCB的库中.
2.BCB除了使用编译生成的*.DCU,还要将*.OBJ连接到相应LIB中,将*.HPP
放到INCLUDE目录中.所以,如果没有LIB的工程,很难完成.

3.决不要相信Build with run time package.这样生成的程序需要数个
X.XXMB的BPL,使您在程序发行时马上膨胀好几倍.Run Time Package是BCB
最大的垃圾!!

4.如果必须使用Run time package,记得将使用了的package拷全,还要拷上
CPM3240.DLL.这是C的Run time libary.大部分run time package都需要
它.否则,在没有装BCB的机器上将不能运行.
 
把Lib中的*.dcu删除,把你修改的*.pas copy to lib!
 
1.建一个目录,存放你修改过或调试用的Source下文件
2.在Tools|Environment Options|Library|Library Path编辑框中
将该目录添加到原来Delphi/BCB的Lib目录之前,这样以后你的程序
使用的都是你修改过的文件了.

//这种方法我经常使用.又不影响原来系统运行。

如果你不是打算经常使用你自己修改的文件,则可以将它先拷贝到
你编译的项目目录下,然后添加到项目中.
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
877
DelphiTeacher的专栏
D
D
回复
0
查看
845
DelphiTeacher的专栏
D
后退
顶部