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类继 ...
随机推荐
- jmeter入门非GUI(三)
配置见https://www.cnblogs.com/wish5714/p/9722193.html 该篇介绍非GUI模式的测试方法,及结果报告分析 简介 使用非 GUI 模式,即命令行模式运行 JM ...
- java List递归排序,传统方式和java8 Stream优化递归,无序的列表按照父级关系进行排序(两种排序类型)
当有一个List列表是无序的,List中的数据有parentid进行关联,通过java排序成两种排序类型: 所用的测试列表最顶级无parentid,若为特殊值,修改下判断方法即可. 第一种排序:按照树 ...
- d3.js svg中 g 标签问题一览
svg 中的g标签, 算是比较特殊 1 没有x y属性 2 没有width height 属性 3 不能fill 4 .... g标签基本只管分组问题, 其他功能一概不提供 要解决这些问题, 直接在g ...
- 【CPU微架构设计】分布式多端口(4写2读)寄存器堆设计
寄存器堆(Register File)是微处理的关键部件之一.寄存器堆往往具有多个读写端口,其中写端口往往与多个处理单元相对应.传统的方法是使用集中式寄存器堆,即一个集中式寄存器堆匹配N个处理单元.随 ...
- 16. 3Sum Closest (JAVA)
Given an array nums of n integers and an integer target, find three integers in nums such that the s ...
- paloalto防火墙的优势
1.所有 Palo Alto Networks 防火墙提供一个可用于执行防火墙管理功能的带外管理端口 (MGT).通过使用该 MGT 端口,可以将防火墙的管理功能与数据处理功能分开,从而保护对防火墙的 ...
- 内网ssh穿透
公司服务器没有公网IP,只有内网IP,利用自己的阿里云服务器(有公网ip)做ssh内网穿透,使得外网可访问.方法如下: 环境: 公司服务器和阿里云服务器均为 Ubuntu 操作系统, 需要修改阿里云服 ...
- 一篇文章搞定百度OCR图片文字识别API
一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104
- 13. Redis监控运维云平台CacheCloud
13. Redis监控运维云平台CacheCloud13.1 CacheCloud是什么13.1.1 现有问题13.1.2 CacheCloud基本功能13.2 快速部署13.2.1 CacheClo ...
- angular $digest 运行10次货10次以上会抛出异常
今天在做项目时,遇到一个问题,红圈处输入其他数字(n多次)也不会报异常,但是有一种特例,即0,1,0,1,0,1这种顺序输入时,输入第13次时,页面计算结果(蓝色圆圈)不会更新,困扰了1天多这个问题, ...