论坛信息 |
最新加入:
l_hx
|
今日帖子:
4
|
在线用户:
3
|
|
|
|
导航: |
论坛 -> 论坛精华贴
斑竹:liumazi,iamdream |
|
作者: |
|
2008/2/1 12:28:53 |
标题: |
delphi 2007脱离dotnet的方法(原创) |
浏览:13861 |
|
加入我的收藏 |
楼主: |
这几天从Delphi2006换到2007了,感觉速度有点慢。 正好过年闲来无事,就试试两者到底有什么区别。
首先精减了一些ide package。 通过测试,确认dotnetcore是使用了dotnet功能组件的加载者。 dotnetreg.ideregister进程 21E87B80 53 push ebx 21E87B81 8BD8 mov ebx, eax 21E87B83 E8 CCE3F9FF call Dotnetwincontrol::RegisterDotNetWinControl 21E87B88 E8 E7E4FFFF call Embeddedmodule::RegisterDotNetEmbeddedViews 21E87B8D E8 BE11FDFF call Interopapp::RegisterAddInLoaderService 21E87B92 E8 5512FDFF call Interopapp::RegisterMSBuildSupport
然后去掉了这个最重要的家伙,然后delphi就不给干活啦。不能建立工程和打开包。 为什么呢? 经ida分析调用,找到coreice100.bpl里的原因 是错在createxmlmsbprojectfile上,虽然dotnetcore是个组件,但是已经和整个开发环境息息相关了, delphi 默认建立是msbuild支持的xml格式的项目文件。肯定要调用dotnetcore来完成, 结果引用了未建立的对象,造成ip为00000000,不过delphi 完美地捕捉并解决了错误,bcb就会down掉。 起了一篇文件讲delphi不用msbuild的文件, HKCU\Software\Borland\BDS\5.0\Globals Add a new string value named MSBuildDelphi为0 这个将军在9797版的bds lite 上已经加入了,我看到这个值。 刚巧这个值也是在coreide100.bpl中,通过对代码的分析, 很幸运地找到另一批注册表值的检测代码。 大量跟踪中的弯路就不说了。 分析结果如下: [HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Globals] "MSBuildDelphi"="0" //delphi不用msbuild编译
"MSBuildCpp"="0" //bcb不用msbuild编译 "MSbuildC#"="0" "MSBuildGroup"="0" //重点:delphi不建立msbuild项目。
启动delphi,不加载dotnetcore100.bpl,一切顺利,不再ip=0000000,项目出来了,呵呵和delphi 2006 lite一样了 编译了我的几个项目ok~~~~~
end.
文字
----------------------------------------------
目前关注WXpython PYgtk codeblocks sharpdevelop 学习cli2.0&ms redbits source code.... |
作者: |
|
2008/2/1 14:45:29 |
1楼: |
感谢asmcat2000,测试OK,这下解脱了不用带一个笨重的.NET
----------------------------------------------
-
|
作者: |
|
2008/2/1 17:11:35 |
2楼: |
asmcat2000太强了,佩服啊. 完全可用.
----------------------------------------------
-
|
作者: |
|
2008/2/1 20:48:53 |
3楼: |
MSBuildCpp不能全面解决bcb 2007的运行问题, 因为启动的时候就挂了,访问00000000, 一鼓作气看了下初始化的代码,改动了一点, bcb2007也成功了脱离了。
----------------------------------------------
目前关注WXpython PYgtk codeblocks sharpdevelop 学习cli2.0&ms redbits source code....
|
作者: |
|
2008/2/1 21:03:49 |
4楼: |
严重支持!!!,感谢
----------------------------------------------
Delphi forever
|
作者: |
|
2008/2/1 21:27:29 |
5楼: |
经测试按asmcat2000 方法后,再将以下IDE的BPL删除,启动超快。 "$(BDS)\\Bin\\projecttargets100.bpl"="CodeGear MSBuild Targets File Add-In" "$(BDS)\\Bin\\delphidotnetcore100.bpl"="CodeGear Delphi for .NET IDE Core package" "$(BDS)\\Bin\\dotnetcoreide100.bpl"="CodeGear .NET Core IDE Package" "$(BDS)\\bin\\refactoride100.bpl"="CodeGear Refactor IDE Package" 弊处是:无Refactor功能,无MS BUILD功能。
----------------------------------------------
-
|
作者: |
|
2008/2/1 22:31:13 |
6楼: |
不错不错.启动快了好多.
----------------------------------------------
-
|
作者: |
|
2008/2/1 22:52:17 |
7楼: |
千万要注意还要删除这个,否则点'option'会出错。
[HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Known IDE Packages\Delphi] "$(BDS)\\Bin\\TGIDE100.bpl"="[Delphi] $(BDS)\\Bin\\TGIDE100.bpl"
----------------------------------------------
-
|
作者: |
|
2008/2/2 8:59:30 |
8楼: |
根据asmcat2000的发现做了个安装程序,是不需要.net了,但IDE功能有所减少 文件名: Delphi2007Lite.exe 下载地址: http://www.fs2you.com/files/0c22c638-d10f-11dc-9e98-0014221f4662/
(我早上5:30发的帖子怎么没有了?)
----------------------------------------------
Delphi forever
|
作者: |
|
2008/2/2 9:06:45 |
8楼: |
asmcat2000太牛了,启动加快用DelphiDistiller 1.22就可以了,重构是不能去的。
----------------------------------------------
没有做不到,只有想不到。 bolg:http://hi.baidu.com/lobtao Email:lobtao@qq.com QQ:369687916
|
作者: |
okyzx (okyzx) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2008/2/2 9:15:10 |
9楼: |
支持asmcat2000
----------------------------------------------
-
|
作者: |
|
2008/2/2 9:51:53 |
10楼: |
如果Codegear的开发人员能够公布这些细节就好了,包括目前未知的设置
----------------------------------------------
Delphi forever
|
作者: |
|
2008/2/2 11:07:04 |
11楼: |
请问一下 bcb是怎么实现的?
----------------------------------------------
-
|
作者: |
|
2008/2/2 11:40:38 |
12楼: |
bcb 2007在启动的时候就进行MSBuildRegister初始化工作了 mov ebx, dword ptr [<&coreide100.Projectfileutils::MSBuildRegisterTaskHost>] xor edx, edx .... 增加注册表并不能脱离dotnetcore工作 call Bcbuildhostobject::CBuilderTaskHost mov edx, dword ptr [ebp-14] mov esi, dword ptr [ebx] mov eax, 220C27 ; ASCII "BCC32" call esi //这里保存的工作地址指针为0 形成一个call 0的现场异常。 而这段代码看是一个窗口回调过程 建立者是Cppreg::initialization push 220C2550 call <jmp.&coreide100.Ideintf::MainFormCreated> call <jmp.&designide100.Events::TEvent::Add> mov eax, dword ptr [2218B7B4] push eax push 220C2910 call <jmp.&coreide100.Ideintf::MainFormDestroyed> //主窗口销毁 call <jmp.&designide100.Events::TEvent::Add> mov eax, 220C8BC4 ; ASCII "Borland.Studio.Cpp.dll" call <jmp.&dotnetcoreide100.Interopapp::RegisterIDEAddIn>
临时把这段代码nop掉了,就脱离了dotnetcore100.bpl
然后启动正常,不再初始化dotnet服务序列,工程一切正常,表面上看是脱离了dotnet环境。 但是卸载了dotnetfx之后,bcbide100才真正显示出对dotnet环境的依赖, cppproject.ideregister过不了,用了createcomobject, 免强过了,可以建立工程, 但是在工程编代码,又需要Borland.Studio.Cpp.Structure.dll来进行语法分析。
我感觉,delphi由于以前就够完整 健壮,新加入的功能象Together都是外置的 托管代码。而bcb在2006版还是预览,update以后才正式,开发较晚,引入的 内置托管代码较多。 所以我认为bcb 2007不应该追求delphi 2007的效果了。
我自己使用的是脱离了dotnetcore package的版本(不初始化dotnet 服务)没有 真正脱离dotnet,因为bcbide100这个基本模块已经高度依赖dotnet了。
----------------------------------------------
目前关注WXpython PYgtk codeblocks sharpdevelop 学习cli2.0&ms redbits source code....
|
作者: |
lsuper (lsuper) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2008/2/3 1:00:47 |
13楼: |
分析到位,弓虽啊!
----------------------------------------------
-
|
作者: |
|
2008/2/3 14:00:26 |
14楼: |
感谢sarsfree提供的Delphi2007Lite 在使用过程中发现新建Type Library的时候会报错,这个是什么原因?是否某些库有问题。
这个Lite和完整2007有什么区别?
此帖子包含附件:
 大小:68.3K |
----------------------------------------------
-
|
作者: |
|
2008/2/3 20:07:32 |
15楼: |
的确是,不知道是何原因,还是用完整版吧
----------------------------------------------
Delphi forever
|
作者: |
|
2008/2/3 22:09:54 |
16楼: |
to:sarsfree
之前在网上也搞过一个Delphi2006Lite版本,也存在这个情况,不清楚是什么问题,但是应该是同一个原因造成的。大家可以一起研究。
----------------------------------------------
-
|
作者: |
lsuper (lsuper) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2008/2/10 15:28:01 |
17楼: |
感觉 delphi 200x 的重构功能太垃圾了,个人强烈推荐 mmx!(model maker codeexplorer)
----------------------------------------------
-
|
作者: |
|
2008/10/11 13:42:24 |
18楼: |
哈哈不错
----------------------------------------------
-
|
作者: |
|
2008/10/11 15:20:46 |
19楼: |
的确有能人,佩服!
----------------------------------------------
-http://blog.163.com/xxxp_163/
|
作者: |
|
2009/1/9 11:46:33 |
20楼: |
华宇物流 华宇物流公司 上海华宇物流 wuyuwencangtian090109
----------------------------------------------
-
|
作者: |
|
2010/6/8 18:30:45 |
21楼: |
谁来搞一下delphi2010,也脱离 .net
----------------------------------------------
-
|
作者: |
|
2011/7/9 18:28:34 |
26楼: |
乐蜂网 卡帕
----------------------------------------------
-春水堂
|
作者: |
|
2013/8/4 12:40:46 |
36楼: |
几年前的主流配置就多开delphi2007毫无压力了,还折腾这些有什么意义?能增加稳定性么,能提升速度么。
----------------------------------------------
这家伙很懒,什么都没有留下。
|
作者: |
|
2014/2/23 10:18:58 |
37楼: |
牛人
----------------------------------------------
http://www.kittyapp.net
|
|