将一段代码从delphi3升级到delphi6,编译报告找不到DsgnIntf,用DesignIntf替代后,再编译就报告TformDesigner没有定义,请问TformDesigner是个什么东东?应该怎么处理代码?先谢过各位大虾!

解决方案 »

  1.   

    从d3到d6?好多类库都变了,当然编译不了,我前些天有段d5的代码在d7下也编译不了。
    建议你重写代码。TformDesigner好像是窗体构造类型,可能从d3到d6这个过程中vcl的创建窗体方法变了。我是这样理解的,算是抛砖引玉吧,也希望有人能给你个合理的解释。
      

  2.   

    关于把设计时代码从运行时代码中分离出来的问题  
    译(DBoy)    自从Delphi6出来以后,一个经常被提到的问题是Proxies.pas文件从源文件中消失了。
      
      这个改变是大趋势的一个部分。Borland在Delphi 5中没有装载DsgnIntf.dcu,这显然是要强迫迎合Delphi和C++Builder的许可协议。运行时代码在很多控件中常被不经意地用到。在某些方面Borland鼓励:如果你运用新的控件向导,你将发现这个向导只创建了一个单元,它把控件运行时的框架代码和注册函数放在同一个单元中。  在Delphi6中Borland更进一步,不仅用DesignIntf替换了DsgnIntf,而且属性编辑器也被放进了DesignEditors,DesignMenus,DesignWindows和其它的一些设计文件里。特别是DesignEditors使用了其它的一个名叫Proxies的IDE文件。(Proxies代码放在DesignIDE.bpl文件中。)不用说这些改变将会产生编译时的错误。  如果你的运行时代码已经与设计时代码分开了,那么就很容易修改。打开设计时包,然后选择一个目录,点击Add按钮。填写designide.dcp和点击确定。重新编译你的包,这时错误已经没有了。  如果你的设计时代码和运行时代码已经混合在一起了,那应该怎么解决呢?在Delphi里DesignIDE.bpl不是一个可以再分发的包。因此,即使是只是设计时包使用了组件的运行时代码或是只是控件dcu用了都将产生问题。  99.99%的情况事实上很容易解决。你的运行时代码事实上没有使用设计时代码;问题是没有合适的分开。hehe^^
      

  3.   

    我在DELPHI6开发人员指南中看到这样 一句话:delphi的包给我们提供了放置程序的部分代码到单独的模块中和手段,这些模块可被多个程序共享。如果有DELPHI1或DELPHI2的代码,得益于包技术,使得可以不修改任何代码的情况下,都能使用这些代码。P73页
      

  4.   

    从D3到D6的跨度也忒大了吧,DELPHI6的一些书上有说如何从D1开始的升级方法,可以看看