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 Boot学习笔记(七):@Configuration,@bean注解
@Configuration作用在类上,相当于一个xml文件 @bean作用于方法上,相当于xml配置中的<bean>标签 一个例子: 新建一个Springboot工程 新建一个User类 ...
- dubbo 面试
1.使用dubbo+zookeeper ,如果注册中心挂掉,是否可以继续通信?(zk集群可以达到高可用,但是如果全部挂掉呢?) 我答了不可以吧(项目没用过,自学没又这深度) 正确答案: dubbo使用 ...
- PhoenixFD插件流体模拟——UI布局【Output】详解
Liquid Output 流体输出 本文主要讲解Output折叠栏中的内容.原文地址:https://docs.chaosgroup.com/display/PHX3MAX/Liquid+Outp ...
- Python学习—数据库篇之初识mysql
一.下载与安装 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好 ...
- ES6学习笔记(数组)
1.扩展运算符:, 2, 3]) // 1 2 3 console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5 用于函数调用 function add(x, y) { r ...
- DDB---查询与优化
摘要:分布式数据库(Distributed DB)是数据库中非常重要的一个部分,随着要处理的数据越来越多,分布式逐渐成为了一种策略.主要有:分布式操作系统,分布式程序设计语言,分布式文件系统,分布式数 ...
- vue(一)vue-cli安装
第一步:我们首先要全局安装vue官方提供的脚手架工具:vue-cli $ npm install vue-cli -g 第二步:然后我们就可以创建自己的vue项目了, $ vue init webpa ...
- unity插件各领域王者
移动端手势操作 Easy Touch 获取 缓动 iTween 获取 可视化编程 Playmaker1.9.0 获取 UI NGUI,UGUI 获取 Shader着色器可视化编程 AmplifySha ...
- python 全局变量
修改全局变量 name = 'jason' def change_name(): global name name = 'Jason'
- grid布局
display: grid; //行 //每一行中有几块,每块所占的width的百分比(1) grid-template-columns: 70% 30%; //每个div的width 100px,自 ...