今天碰到一个问题,想与各位兄弟讨论我的程序中需要使用到VCL的一个运行期包,比方说rtl70.bpl
然后我想对rtl包所包含的某个单元进行修改,比方说classes单元
但是如果我修改它的话,我必须rebuild这个包,因为我的程序需要rtl70.bpl不知道是什么原因,Delphi是不提供这些包的源码的,
所以我手工做了一个rtl.dpk但是我检查过Delphi原始发布的rtl70包,
发现它包含两个单元Enterprise版的Delphi 7是没有提供的
(不要说pas源码,连dcu都没有提供)
这两个单元是StrHlpr和VarHlpr单元,于是我搜索Source目录下的所有pas文件,看看
有没有什么单元引用了这两个单元,搜索结果是没有一个单元使用这两个单元
之一,看来,似乎是由Delphi IDE使用的,不知道是否这样?如果这两个单元是可以省略的话,那么我可以修改rtl中得一些实现细节
或者添加一些我自己的单元,
如果这两个单元是必需的话,
那么我们就没有办法修改rtl所包含的单元里的源码
(如果我们的程序需要运行期的rtl.bpl的话)
我尝试了一下,把strhlpr和varhlpr去掉,然后用dcc32编译我做的rtl包,
然后把编译结果复制到一些需要这个运行期包的程序的工作目录中,
再运行这些需要这个包的程序,并谨慎的使用procexp检查了这些程序
载入的rtl70.bpl是否我所编译的,
到目前为止没有发现它们异常的地方总结,
1,没有单元引用了StrHlpr和VarHlpr
2, 去掉这两个单元后编译得到的包目前正常工作所以我比较倾向于这两个单元只是供Delphi IDE使用的,我们编译的程序可以
忽略它
在这个问题上有经验的兄弟,不妨大家讨论讨论