新手问题:BCB 6的源程序如何在2007里开发?
我是一个C++ Builder + VCL编程新手。
我想,学习一门新的语言或熟悉一个新的架构,最脚踏实地的研修方法就是实际操练,而实际操练最好的方法,莫过于亲自接触源代码,而关于代码的学习,非常重要的一点就是,将那些现成的高质量的代码“拿来” —— 琢磨、临摹、调试、扩展。
现在,我选择了CodeGear C++ Builder 2007作为我学习和实践C++ Builder + VCL的平台。
我下载了一些C++ Builder源程序。这些源程序,都是BCB 6开发的。那么,问题就来了……
打开这些源程序包,里面有一些文件,它们的扩展名分别是:
bpr、cpp、h、dfm、res等等。
根据我粗略的理解,这些文件是这样的:
bpr —— 源程序的项目文件;
cpp —— C++源代码文件;
h —— C++头文件;
dfm —— 跟GUI程序的窗体有关的源代码;
res —— 项目的资源文件。
那么,对于C++ Builder这个IDE来说,打开一个新的程序项目,应该由打开项目文件开始。那么,在CodeGear C++ Builder 2007(下简称“2007”)打开某个BCB 6源程序的bpr文件,马上就报Error了:
OLE error 80131052, ClassID: {某个GUID值}
而详细信息是形如这样的:
[200446D4]{rtl100.bpl } ComObj.OleError (Line 1269, "common\ComObj.pas" + 1) + $11
[200446E3]{rtl100.bpl } ComObj.OleCheck (Line 1276, "common\ComObj.pas" + 0) + $7
[200449AC]{rtl100.bpl } ComObj.CreateComObject (Line 1364, "common\ComObj.pas" + 2) + $1A
[220480AA]{bcbide100.bpl} Borland_Studio_Toolsets_TLB.CoBuildOptionExplorer.Create (Line 1880, "Borland_Studio_Toolsets_TLB.pas" + 1) + $8
[2204ECB3]{bcbide100.bpl} BOEOptsIntf.BOE (Line 296, "BOEOptsIntf.pas" + 3) + $8
[220C2EF9]{bcbide100.bpl} CppProjectImport.TCppProjectConverter.CreateNewProjectNode (Line 608, "CppProjectImport.pas" + 3) + $39
……
……
……
开来,BCB6的源程序,至少是项目文件,无法被2007里正确认可。那么,试着从项目(bpr)文件入手,看看是否有什么可行的办法。用文本编辑器软件打开该bpr文件 ——
检查所有明显的与BCB 6有关的字段:
<MACROS>里面:
<VERSION value="BCB.06.00"/> <INCLUDEPATH value="……;;……;$(BCB)\include;$(BCB)\include\vcl;……\C++_Builder_VCL\SUIPack_v6.2\Include\BCB6"/> <LIBPATH value="……;;……;$(BCB)\lib\obj;$(BCB)\lib;;……\C++_Builder_VCL\SUIPack_v6.2\Source"/>
<IDLCFLAGS value="-I……; -I…… -I$(BCB)\include -I$(BCB)\include\vcl -I……\C++_Builder_VCL\SUIPack_v6.2\Include\BCB6 -src_suffix cpp -D_DEBUG -boa"/> <CFLAG1 value="-Od -H=$(BCB)\lib\vcl60.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c -tW -tWM"/>
<VERSION value="I DO NOT KNOW"/>
<INCLUDEPATH value="$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;……"/>
<LIBPATH value="$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;……/>
<IDLCFLAGS value=" -I$(BDS)\include -I$(BDS)\include\dinkumware -I$(BDS)\include\vcl -I$(BDS)\lib\psdk -src_suffix cpp -D_DEBUG -boa"/>
Could not convert variant of type (Null) into type (String)
详细信息形如:
[2001D313]{rtl100.bpl } Variants.VarCastError (Line 530, "sys\variants.pas" + 1) + $4A
[20021397]{rtl100.bpl } Variants.@VarToLStr (Line 2292, "sys\variants.pas" + 6) + $8
[220A7E83]{bcbide100.bpl} CppProjOpts.ReadMakeSymsFromNode (Line 6694, "CppProjOpts.pas" + 6) + $16
[220A7F9F]{bcbide100.bpl} CppProjOpts.TMakeSymsConverter.ReadFromXml (Line 6704, "CppProjOpts.pas" + 6) + $14
[220C4CAE]{bcbide100.bpl} CppProjectImport.TCppProjectConverter.XMLBprToBdsProj (Line 998, "CppProjectImport.pas" + 11) + $11
[220C0DF0]{bcbide100.bpl} CppProjectImport.TCppProjectConverter.ConvertOldCBuilderProject (Line 170, "CppProjectImport.pas" + 20) + $8
……
……
……
唉……实在不知道怎么办了……
特向这里的各位大虾求教:BCB 6的源程序,究竟要如何转换,才能在C++ Builder 2007里开发?
都说“C++ Builder‘向下兼容’”——怎么才能实现这种兼容性呢?
请大虾们不妨从基本的讲起吧,比如关于VCL编程的架构性的基础。
恳请大虾不吝赐教!
非常感谢!
[解决办法]
够曲折哦
[解决办法]
哈哈,慢慢琢磨。
[解决办法]
我看你这个,主要是第三方插件没安装的问题
你把需要的第三方插件安进去再说,还有工程文件不要用记事本编辑,会出错的
[解决办法]
謝謝分享,很好很詳細。