Delphi XE7试用记录1
Delphi XE7试用记录1
在网上看到XE7的一些新特征,觉得完整Unicode支持、扩展Pascal语法、更多功能的库都很吸引人,决定试试XE7。
XE7官方安装程序很大,因此选择了lite版,网上可以搜到下载地址,安装很容易,注意要把需要的附加功能包和安装程序放在一起,而且不要更名。
安装后,先建立一个VCL窗体程序,测试一下。
XE7启动速度比Delphi7慢了许多,毕竟程序大了很多,自带的组件包也多了很多。减少组件包的数量可以提高一些速度,网上说有默认程序选项,设置以后可以适用于新工程,但是我没有找到。排除组件包需要一个个反选,但信息保存在*.dproj文件中,可以从设置好的项目中复制相关信息,快速设置排除组件包。也可以把一个项目放到项目仓库中,甚至可以设置为默认项目,以后每次新建项目就从这个项目的副本。
新建VCL窗体程序,直接编译,编译后的程序达到10mb,比Delphi7大了很多倍。有人说目标程序的体积不是问题。(真正做项目,体积鲜有少于3M的,但,你会发现,无论你怎样添加第三方组件,delphi的目标程序鲜于大于6M的,原因在于,delphi无论怎样做,它很多扩展的unit都本源于一些基本的Unit。虽然,用xe2会比d7体积大个1M,但如果你用它做项目,会发现最终目标程序,只会比用d7多1M多一点点,因为体现不会因为窗口和组件的增加而增加,这种增加不是线性的。)
但是同样的功能,占用空间多也不太好,尤其是用于测试的小程序多了,占用空间也很可观。在工程文件中关闭调试信息、关闭RTTI可以减少1mb多。在工程文件的program字段下增加下面两句关闭RTTI:
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
目标程序任然大于9mb。但是安装JVCL后,发现Examples中的工程编译后却只有2-3mb,比较了一下工程选项,也没有找到原因。期待高手可以解答这个问题。
既然JVCL的工程比较小,就把一个JVCL的工程的内容清空,作为新建工程的出发点,这样新建工程也就3mb左右了。后来发现从Delphi Projects中的SDI Application出发新建项目,编译的程序也只有2mb多点。
VCL Forms Application: Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
SDI Application: Winapi.Windows, System.Classes, Vcl.Graphics, Vcl.Forms, Vcl.Controls, Vcl.Menus, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.ExtCtrls, Vcl.ComCtrls, Vcl.ImgList, Vcl.StdActns, Vcl.ActnList, Vcl.ToolWin, System.Actions;
上面是两个项目窗体引用的单元,稍有不同,应该不会有很大差别。在SDI项目中增加了一个VCL Form,这个单元引用和VCL Forms Application项目中的Form引用相同,编译后尺寸仍然是2mb多点。让人费解。
编译选项不是原因,单元引用也不是原因,再看看工程代码。VCL Forms Application的工程代码中多了一句:
Application.MainFormOnTaskbar := True;
应该是用于Win7以上操作系统工具栏的代码。把这句注释掉,仍然不能减少程序的大小。
难道还漏掉了什么?既然无法发现原因,就把SDI项目中原来的窗体从项目中删除,把这个项目保存到项目仓库中,作为新建项目的出发点。
目标程序大小的问题总算有了对策。
Delphi XE7试用记录1的更多相关文章
- Delphi XE7试用记录2
Delphi XE7试用记录2 万一博客中介绍了不少Delphi7以后的新功能测试,想跟着测试一下.每次测试建立一个工程,在窗体上放几个按钮,测试几个相关的功能,这样虽然简单明了,但日后查阅起来不方便 ...
- RemObjects SDK Source For Delphi XE7
原文:http://blog.csdn.net/tht2009/article/details/39545545 1.目前官网最新版本是RemObjects SDK for Delphi and al ...
- 咏南CS多层插件式开发框架支持最新的DELPHI XE7
DATASNAP中间件: 中间件已经在好几个实际项目中应用,长时间运行异常稳定,可无人值守: 可编译环境:DELPHI XE5~DELPHI XE7,无需变动代码: 支持传统TCP/IP方式也支持RE ...
- Delphi XE7调用C++动态库出现乱码问题回顾
事情源于有个客户需使用我们C++的中间件动态库来跟设备连接通讯,但是传入以及传出的字符串指针格式都不正确(出现乱码或是被截断),估计是字符编码的问题导致.以下是解决问题的过程: 我们C++中间件动态库 ...
- delphi XE7 中的消息
在delphi XE7的程序开发中,消息机制保证进程间的通信. 在程序中,消息来自: 1)系统: 通知你的程序用户输入,涂画以及其他的系统范围的事件: 2)你的程序:不同的程序部分之间的通信信息. ...
- 关于delphi XE7中的动态数组和并行编程(第一部分)
本文引自:http://www.danieleteti.it/category/embarcadero/delphi-xe7-embarcadero/ 并行编程库是delphi XE7中引进的最受期待 ...
- Delphi XE7中新并行库
Delphi XE7中添加了新的并行库,和.NET的Task和Parellel相似度99%. 详细内容能够看以下的文章: http://www.delphifeeds.com/go/s/119574 ...
- Delphi XE7下如何创建一个Android模拟器调试
利用Delphi XE7我们可以进行多种设备程序的开发,尤其是移动开发应用程序得到不断地加强.在实际的Android移动程序开发中,如果我们直接用android真机直接调试是非常不错.一是速度快,二是 ...
- DELPHI XE7 新的并行库
DELPHI XE7 的新功能列表里面增加了并行库System.Threading, System.SyncObjs. 为什么要增加新的并行库? 还是为了跨平台.以前要并行编程只能从TThread类继 ...
随机推荐
- Java框架spring 学习笔记(十一):aop相关概念
为什么要引入aop? 比如如下情景: 在父类的方法名称发送了变化,在子类调用的方法也需要变化,当工程规模越来越大的时候,维护起来相当不方便,于是就引入了横向切面aop. aop的相关概念: 连接点:类 ...
- pwnable.kr-leg-witeup
做过后其实知道,是很简单的一段代码,也很容易看懂,看懂后计算key1.key2.key3之和即可. main 汇编: 嗯,看来keyx的返回值是r0了,详细分析r0值. key1: 在arm状态下,r ...
- Python开发【第十篇】:RabbitMQ队列
简介 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. 安装 首先安装erlang环境. 官网:http://www.erl ...
- Spring MVC相关
配置文件说明 web.xml, spring配置文件 applicationContext.xml, spring配置文件, mybatis连接mysql配置文件 sql-map-config-mys ...
- ERC20 token standard issues.
- boost中bind的使用
:first-child { margin-top: 0px; } .markdown-preview:not([data-use-github-style]) h1, .markdown-previ ...
- debian proftpd安装
- CentOS 7 minimal网络配置
centos最小化安装没有ifconfig命令,可以使用 ip addr 查看网络信息,习惯ifconfig的用户,则使用 yum -y install net-tools 即可 ; 如果yum不 ...
- net_device 内核中是如何组织的
下边函数实现将新的 net_device 设备插入到内核链表中工作 /* * Device list insertion */ static void list_netdevice(struct ne ...
- C/C++生成静态库动态库及语言交互
C++静态库与动态库(比较透彻) Go中调用C的动态库与静态库 我的示例 文件结构 |- sample |- c |- libsample |- libsample.h |- libsample.cp ...