Delphi XE5中的新增内容
Delphi XE5是所有Delphi开发人员的必须备升级,并且是来自Embarcadero的获奖的、多设备应用开发解决方案的最新版本。使用Delphi XE5的新特性,以交付应用Android、 iOS、Windows 和OS X。以PC机、平板电脑和智能手机为目标,更轻松地与更多数据连接 - 等等!
Delphi XE5中的新特性
- 针对设备和仿真器的 Delphi Android ARM编译器
- FM 平台用于创建针对Gingerbread (2.3.3 – 2.3.7)、Ice Cream Sandwich (4.0.3, 4.0.4)和Jelly Bean (4.1.x, 4.2.x, 4.3.x)*的原生Android 应用。
- iOS 7 SDK 支持和样式
- 针对Android、iOS、Windows和OS X 的时间选择器控件
- 针对Android、iOS和OS X 的通知中心组件
- Android、iOS、Windows和OS X 上内置搜索过滤可用于 TListView
- 在Android和iOS 上滑动屏幕就可以删除
- 在Android和iOS上共享工作表支持
- FM 平台性能优化
- 针对Android 的Delphi RTL
- 针对Android 的部署管理器
- 部署应用到针对Ice Cream Sandwich 和Jelly Bean 的仿真器
- 部署应用到Android 设备(调试 / 应用商店)
- 针对Android 的远程调试
- 专业版包括对本地数据库的扩展 FireDAC支持,包括Microsoft Access数据库、SQLite数据库、InterBase ToGo / IBLite、本机上的InterBase、 MySQL Embedded、本机上的MySQL Server、Advantage Database本地引擎、本机上的PostgreSQL、Firebird Embedded、以及本机上的Firebird
- IBLite 嵌入式数据库可用于Android 和iOS,带有自由不受限的部署许可证
- REST 客户端函数库用于简化 REST 服务的调用
- 授权支持,包括基本的身份认证、计划身份认证、OAuth1、OAuth2
- TRestClient、TRestRequest、和TRestResponse 组件
- REST 调试器工具用于测试 REST 调用及其参数
- 部署管理器中的多重选择
- IDE 内视现在可作为 IDE右上角中一个搜索框使用
- 设备管理器可以管理并选择 FM 移动窗体设计器中的缺省设备
… 等等!
* 已支持 Android 设备的列表
Delphi XE4 |
|
Delphi XE3 |
|
Delphi XE2 |
|
Delphi XE |
|
【CSDN8月20日消息】根据国外媒体报道,Embarcadero Technologies公司宣布推出RAD Studio 2010。开发者可以利用它提供的便捷的触摸屏开发框架来创建基于触摸GUI界面的程序,包括平板电脑、触摸板和kiosk程序。
该版本提供了如下的新特性和功能:
创建手势识别和触摸控制的程序。
内置了超过30种的手势设定,包括上、下、左、右以及像平移、缩放和旋转。
可以通过VCL Gesture Designer在组件级对手势进行可视化设定和添加。
可以在输入屏幕上建立虚拟触摸板和多语言键盘。
可以在只对代码进行很小的情况下就能将Delphi和C++ Builder程序升级为支持触摸和手势识别功能。
RAD Studio 2010对于触摸程序开发的支持独具特色,因为它可以和多种版本的Windows无缝接合,包括Windows 2000、XP、Vista和Windows 7,而且支持多种输入设备,包括单点和多点触屏幕、触摸笔和鼠标。
触摸操作现在已经变成了现实,而且可以向用户提供更丰富的交互体验。从kiosks和POS机到iPhone和Windows 7,手势识别功能已经成为使程序更具竞争力的关键特性,因为消费者和商家都认识到了自然输入的便利性。,Embarcadaro公司的Michael Swindell说,随着Delphi和C++ Builder 2010的发布,Embarcadero也将提供一套简单的解决方案,可以向多种Windows平台的程序中加入触摸和手势识别功能。
RAD Studio 2010的其他特性还包括:
支持Firebird。Delphi对其提供了本地支持。Embaracaro声称Firebird是全球应用最广的开源数据库。
新的DataSnap。DataSnap服务器已经扩展到了几乎所有的架构RIA、JEE、RESTful、AIR等等。
支持Windows 7。RAD Studio预计对Windows 7的API提供支持,开发者可以利用其Natural Input库Direct2D图形库。
对IDE环境进行了超过120项改进,提升了开发者的使用体验,提高了工作效率。
小资料:Kiosks,Kiosk ModeKiosk Software广泛用于公共电脑或者嵌入系统(如可以上网的公共电话、ATM、机场自助服务系统、网吧管理软件等),这些程序一般都运行于普通的操作系统,但为了安全以及防止使用者使用其他的程序,Kiosk一般都会全屏运行并锁住系统的其他程序。虽然IE的Kiosk模式没有锁住其他程序,你仍可以用Alt+Tab来切换,但通常运行Kiosk程序的地方都不会提供键盘给你,最多只是一个仅供最低需求的虚拟键盘而已。(译/曹巳甲)
Delphi2010新发现-类的构造和析构函数功能
Delphi2010发布了.
虽然凭着对Delphi的热爱第一时间就安装了,但是现在可能是年纪大了,对新事物缺乏兴趣了.一直都没有仔细研究.
今天有点时间试了一下新功能.
本来C#和Delphi.NET是支持类的构造函数/析构函数的(注意不是实例的构造和析构).也就是在模块初始化/卸载的时候会调用.
这样有很多好处,比如说类的静态变量的初始化什么的都可以在这里做.
Delphi For Win32对这方面的需求还不是很大.
第一个原因.历史上旧版Delphi不支持静态变量.只能用Unit的全局变量+类函数来模拟.所以类的构造析构基本没需求.从Delphhi2005还是2006开始才支持Class var的.记得不太清楚了
第二个原因.Delphi的Unit有初始化节和反初始化节(initialization/finalization).很多初始化工作都可以在这里面做.比如说类的静态变量.所以对类的构造函数需求不是很大.
随手试了一下Delphi2010.惊喜的发现不知道什么时候Delphi2010已经开始支持类的构造和析构函数了.易博龙和CodeGear居然在介绍Delphi2010的新变化的同时都没有介绍这个特征.
贴一段代码:
type TTest = class private class var StaticABC : Integer; //类变量(类似C++的静态变量.但不完全等同) var FABC : Integer; //普通成员变量 public class constructor Create();//类的构造函数 class destructor Destroy; //类的析构函数 constructor Create(); //实例的构造函数 destructor Destroy; override; //实例的析构函数 end; { TTest } class constructor TTest.Create; begin StaticABC := 1234; end; class destructor TTest.Destroy; begin end; constructor TTest.Create; begin FABC := StaticABC; end; destructor TTest.Destroy; begin inherited Destroy; end;
呵呵.很有意思.虽然以前用Unit的initialization/finalization可以实现.但是如果有了类的构造和析构语法的话代码的可读性会更好.
同时还发现结构体(Record)也可以用一样的语法.可编译通过,但是实际上却没有效果.估计以后会加上这个功能吧
转载的delphi2010新功能
1、Object Inspector 中的 Boolean 属性显示了 Checkbox
这个改进比较明显,看下图就明白了,直接点击 Checkbox 即可改变 Boolean 的值;
2、可以用 Tab 键和 Shift+Tab 缩进代码了
这个没法用图来说明,只能自己体会了,个人觉得,Delphi 1.0 就应该这么做
3、可维护最近打开的 Projects 和 Files 列表
在菜单 File-Reopen-Propeties 中,可设置最近打开 Projects 和 Files 的显示数量,并可删除、清空,如下图:
4、代码编辑器的搜索功能增强
看下图,效果和 Firefox 的搜索功能几乎一致,搜索框移到了下方,同时高亮搜索词:
5、代码自动完成增强:Auto Invoke
刚才说“里程碑”,主要是指这个功能。
当前的 Delphi 编辑器只有在输入“.”的时候,才会出现自动完成列表。在 Delphi 2010 中启用 Auto Invoke 功能后,当你输入任意一个字符的时候,都会出现匹配的自动完成列表,和 Visual Studio 差不多。
Auto Invoke 默认是禁用的,在 Tools - Options 中启用:
下图是输入 Show 后出现的自动完成列表,当然,当你输入第一个字母 S 的时候,自动完成列表已经开始匹配显示了:
在 Visual Studio 中,当输入完赋值运算符后,可自动判断类型并显示枚举类型的值列表,当前的 Delphi 2010 还做不到这一点,不过当输入字符后,也是会按类型匹配的。看下图,会显示 Align 属性的可选值:
当前的 Auto Invoke 用的时候真的是很爽,不过有的时候还是有些问题,会不合时宜地出现,而且自动完成列表有时会匹配错误,编程时有被“干扰”的感觉,期望以后的版本能将其改进得更为“智能”。
6.格式化代码,Edit-source或ctrl+D,但格式效果不大好,可以设置一下
7.安装包标识
第一个图标表示已安装
第二个表示未安装
第三个表示非设计时包
8.拖动调试,这个比较有意思,断点还可以回退。看下面的效果
第一次运行的时候,x的值=150
按住33行的向右箭头不放,拖到32行放开,效果如下图
再F8走一步,x的值就变成200了
更多的Delphi2010新特性,可以参考Delphi 2010 Handbook,非常值得看看。
目前还只有英文版的。
http://m8spy.persiangig.com/.ZqB2Ja51KF/Ebooks/Delphi%202010%20Handbook.pdf
此书配套源码
http://cc.embarcadero.com/Download.aspx?id=27601
- 增强的DataSnap组件
DataSnap是一组数据库组件。在Delphi 2009中对其进行了重构。通过DataSnap在客户端中可以如同调用本地函数般的调用远程函数。 - 基础语言特性的增强,增加泛型和匿名函数的支持
- VCL组件的增强,增加了Ribbin Controls(类似office 2008的界面控件)组件,PNG的支持,对现有组件的改进,继续增强对Vista的支持。
- 增加国际化支持。提供了完整的Unicode支持,从IDE到RTL、VCL等整个构架体系已完全迁移到Unicode。同时提供一组本地化工具,方便将程序翻译为各种语言。
- IDE增强,比如提供了新的Class Browser(类浏览器),强壮的构建配置,以及对资源管理器(resource management )的增强。
- COM和ActiveX开发便得更为友善。
Delphi 2009完全重构了对COM和ActiveX的支持。现在,COM和ActiveX的开发对开发者而言,已经变得完全透明,拥有完整代码的解决方案(译者注:这部分我没看太懂:(,反正就是说更好用了)。 - 使用VCL组件实现AJAX的开发,想构建普通应用程序一样构建WEB 2.0程序
读帮助文档发现Delphi2009的新特性,象C语言一样用数组方式使用指针.
传统的Pascal指针和数组不是等价概念.不能像数组一样使用下标指针(编译器特殊处理的PChar类型除外).
而C语言中数组就是数组第一个元素的地址.和指针在一定程度上等价.指针所指向的内容也可以象数组一样用下标来访问.
虽然问题不大但是写起代码来就麻烦,而且不直观.
如下代码以往的Delphi只能这样写.
const rw = 10; rh = 10; procedure SetRects(lpRect: PRect; dwCount : Cardinal); var I : Integer; begin for I := 0 to dwCount - 1 do begin lpRect^ := Rect(I*rw, 0, I*rw+rw, rh); Inc(lpRect); end; end;
或者非要用下标访问的话就要变通一下.
const rw = 10; rh = 10; procedure SetRects(lpRect: PRect; dwCount : Cardinal); type TRects = array[0..0]of TRect; pRects = ^TRects; var I : Integer; lpRects : pRects; begin lpRects := pRects(lpRect); for I := 0 to dwCount - 1 do begin lpRects[I] := Rect(I*rw, 0, I*rw+rw, rh); end; end;
但是Delphi2009新增了编译开关,允许象C语言一样用下标直接访问数组所指向的元素.
{$POINTERMATH ON} const rw = 10; rh = 10; procedure SetRects(lpRect: PRect; dwCount : Cardinal); var I : Integer; begin for I := 0 to dwCount - 1 do begin lpRect[I] := Rect(I*rw, 0, I*rw+rw, rh); end; end;
呵呵方便多了.
不过要注意默认是{$POINTERMATH OFF}的.
目前多数Delphi2009新特性的介绍
2008年09月16日 星期二 10:43
集中在Unicode,以及一些新的URL上,我试图从一些不同的角度察看一下Delphi2009都有些什么东西. 首先我们看到了Tubron的增强,客观的讲,内部的改进确实还是挺大的,尤其是在CodeGear人手并不是很整齐的情况下,之前觉得遗憾的地方的意思就是说Delphi在外围的变化并没有跟上其内部的改进速度。 刚才上面有朋友说起VCL库,其实我们还是不要轻易说什么是“最好”,当然可以是最喜欢的,如果我们对比下JAVA,VCL的进步真的是太慢了,这很大程度上都是之前Borland公司自己的原因,这次对比RTL中我发现codegear仍旧为今后在linux上的发展留出了空间,不少条件编译指令都作了对应调整,我们有理由等待未来的Delphi for Linux,希望不要再出什么单独的kylix版本了。 {$POINTERMATH ON} procedure MoveRects(Rects: PRect; Count: Integer); begin while Count > 0 do begin MoveRect(Rects[Count - 1]); MoveRect((Rects + Count - 1)^); Dec(Count); end; end;
|
内嵌类
内嵌类在类的内部声明,它被大量的应用在.net framework以及面向对象的编程中,它表明一种概念性关联关系,并且避免了命名冲突,它同样支持delphi win32编译。
定义内嵌类
它使用如下语句定义
type className = class [abstract | sealed] (ancestorType) memberList type nestedTypeDeclaration memberList end;
当内嵌类定义遇到第一个非标识符时终止,例如:procedure, class, type和所有可见性范围修饰符。内嵌类与容器类同样适用正常的访问、可见性规则。一个内嵌类能存取它的容器类实例的变量(如字段,属性或者方法),但是它必须要有一个参考对象。一个内嵌类能存取类静态字段(class fields)类属性(class properties)和类静态方法(class static methods)且不用参考对象,但必须遵守delphi可见性规则。
内嵌类不增加容器类的大小,建立一个容器类实例时不会同时建立内嵌类的实例,内嵌类与容器类仅仅是定义的上下文关系。
定义和使用内嵌类
下面的例子演示如何去定义和存取内嵌类的字段和方法。
type TOuterClass = class strict private myField: Integer; public type TInnerClass = class public myInnerField: Integer; procedure innerProc; end; procedure outerProc; end;
在实现内嵌类的innerProc方法时,你必须指定它的容器类的名字,例如:
procedure TOuterClass.TInnerClass.innerProc; begin ... end;
可以用 . 标志像存取一般的类成员一样去存取嵌套类的成员。例如:
var x: TOuterClass; y: TOuterClass.TInnerClass; begin x := TOuterClass.Create; x.outerProc; ... y := TOuterClass.TInnerClass.Create; y.innerProc; end;
内嵌常数
常数也可以同样在内嵌类型块中声明,常数块的结束标志与内嵌类块的结束标志一样,关键字或可见性修饰符。内嵌常数不支持类型常量,如 Borland.Delphi.System.Currency 或Borland.Delphi.System.TDateTime 。它只支持简单类型,如:序数,枚举,字符串,实数等类型。
下面的代码演示声明内嵌常量
type TMyClass = class const x = 12; y = TMyClass.x + 23; procedure Hello; private const s = \'A string constant\'; end; begin writeln(TMyClass.y); // 输出y的值 35. end.
delphi2006语言新特性-帮助类
帮助类(Class Helpers)
帮助类是联合其它类的一种类型,它能为联合类(包括它的派生类)增加方法和过程。它为我们提供了一种不使用inheritance来扩展一个类的能力,你可以在任何地方使用帮助类,编译器自动决定在什么时候使用原始类还是增加的帮助类。(注意:帮助类只是一种扩展一个类的方法,但是应该仅仅在为实现某种新目的而开发新代码时被使用,而不应该视为一个设计工具被使用。它是绑定语言和平台RTL的 )
定义一个帮助类的语法:
type identifierName = class helper [(ancestor list)] for classTypeIdentifierName memberList end;
ancestor list是可选的
一个帮助类不可以定义实例数据,但允许有类字段(class fields)
可见性规则与memberList语法与一般的类一样
一个简单类可定义并联合多个帮助类,然而,只有一个在源代码中特殊位置的帮助类才能被应用。在最近的范围被定义了的帮助类将应用。帮助类的范围是由delphi风格决定的(在单元中uses子句,由右到左)
(呵呵,上面这段翻译的好像不太准,暂且这样吧,欢迎指正)
下面演示定义一个帮助类:
type TMyClass = class procedure MyProc; function MyFunc: Integer; end; ... procedure TMyClass.MyProc; var X: Integer; begin X := MyFunc; end; function TMyClass.MyFunc: Integer; begin ... end; ... type TMyClassHelper = class helper for TMyClass procedure HelloWorld; function MyFunc: Integer; end; ... procedure TMyClassHelper.HelloWorld; begin writeln(Self.ClassName); // Self是TMyClass 类, 不是TMyClassHelper end; function TMyClassHelper.MyFunc: Integer; begin ... end; ... var X: TMyClass; begin X := TMyClass.Create; X.MyProc; // 调用TMyClass.MyProc X.HelloWorld; // 调用TMyClassHelper.HelloWorld X.MyFunc; //调用TMyClassHelper.MyFunc
注意,帮助类的MyFunc函数被调用,因为它的优先于实际的类
1, 简介
Borland Delphi 2005 是目前delphi的最新版本, 提供了在Microsoft Windows的操作系统和Microsoft .NET 框架 1.1 版本下的快速开发环境, 同时可用Delphi语言(适应win32和.NET 1.1)与C#(只能适应>NET 1.1)开发
产品总览
Delphi 2005 可以看成拥有三个不同的特性:一个使用Delphi语言(Delphi7的后继版本)的Win32特性, 和两个.NET特性:一个使用Delphi 作为开发语言(Delphi8的后继版本), 另外一个使用C#作为开发语言. 关于这裹说到的最后一个特性, Delphi 2005 是从 Borland C#Builder 1.0 升级而来的.
结论就是, Delphi2005是作为Delphi3 到 8和C#Builder开发者的下一个版本, 它在Win32下的快速应用开发和在.NET框架下一样优秀.
关键特性
- 支持三个不同的特性: Delphi for Win32, Delphi for .NET 和 C# 都同处于一个开发环境(和调试环境)中.
- 可以比较容易的在同一个开发环境中移植 Win32 应用程序到.NET中
- 新增一些Delphi语言的新特性如 多单元命名空间, for…in…do循环, 内联函数, 和其它的代码优化技术.
- 支持WinForms, ASP.NET WEB Forms 在可视化环境中的开发, 就如Borland自己在.NET和Win32上的VCL框架上应用程序的开发一样.
- 支持异质的数据访问(可以使用所有的ADO.NET 数据适配器—不仅仅是BdpDataAdapter), 多层的数据应用开发可使用新的 DataSync, DataHub, RemoteServer和RemoteConnection 控件.
- 支持重构来重新组织你的源代码, 以便提升代码的可维护性和成功重用代码的可能性.
- 支持DUnit和NUnit的单元测试, 可以在Delphi for Win32, Delphi for .NET 和 C#项目中使用极限单元测试框架来来提高你代码的质量.
- 支持ECO II (Enterprise Core Objects II)- 一种UML相应的对象模型框架和对象持久性, 通过Borland 数据提供者支持多种数据库, 并且现在也支持ASP.NET.
- 支持ASP.NET的DB Web 控件能使开发更简单的设计, 开发和分发功能强劲的带数据驱动的Web 应用程序.
- 支持版本控制和团队开发, 通过额外的插件StarTeam, 能针对你的项目做特别的务份和提供一个历史列表视图,
- 通过janeva for Delphi for .NET和C# 应用程序的解决方案, 内置支持J2EE企业级EJB, 或者CORBA服务器.
2. Borland Delphi 2005
这个白皮书将能从不同的范围分类来讨论Borland Delphi 2005 一些重要的增强功能. 首先, 将会提及到IDE 方面的增强, 接着是重构, 使用DUnit和NUnit的单元测试, 在数据访问和Web 方面的增强, ALM的支持, 最后谈到Delphi编绎, 语言和调试器方面的增强.
2.1 IDE
Delphi 2005 的可视开发环境(IDE) 在下面提到的各方面都有了意义重大的扩展和增强.
欢迎界面
欢迎界面已经重新设计过了, 不仅显示最近打开过的项目, 还显示Borland 开发者网络和RSS的最新新闻(需要到internet的联接)
多样化的特性
Delphi 2005 支持多样化的特性, 体现在同时支持 Delphi fro Win32, Delphi for .NET,和C#项目. 这裹有个小小的有用提示, 一个个性化图标会在IDE工具条上显示当前选择的类型(Delphi for Win32 对应 , Delphi for .NET对应, 而 C#对应 ).
项目管理器
Delphi 2005 带的项目管理器现在能显示整个项目的目录结构(如果是ASP.NET项目, 甚至还提供了在当前项目目录下创建和管理子目录的功能), 这样能更直观的让你知道文件的放置位置和决定那个文件是要分发给用户的. 在一个项目组中, 我们能够增加项目到不同的目标中(和特性中), 或者从一个项目移动到另外一个中—也就是将一个立即特性转到另外一个中.
现在项目管理器和对象检视器已经能够配合使用, 只要你要项目管理器选择一个文件, 对象检视器就会显示对应文件相关的信息, 如文件名, 文件的全路径, 还会加上相关的属性如文化,名字, 装配器的版本号, 或者本地副本的选项,. 大部分显示的属性是只读的(用灰色字体显示), 当然, 部分是能够改变的, 如文件名, 本地副本的状态,. 项目管理器同时能感知 StarTeam, 并且在管理存储在StarTeam中的项目时, 能根据输入命令提供相关的上下文感知提示.
备份和历史列表
Borland Delphi 2005 在你的项目目录下提供一个隐藏的给你的源码提供简易的维护多级别务份和历史列表的功能,. 这代替了旧的用 ~文件名的方式. 那个 __历史列表目录能够包含项目的多个版本(默认是最后十个维护的版本), 并且能够作为本地的文件版本控制仓库.
历史视图被用来对你的项目文件当前版本的检查和备份不同的版本, 而且还提供了一个非常有用的(智能的)比较不同版本间文件区别的视图. 直观的显示你在源代码中做的加入或移除或修改的动作. 除了能浏览代码的改变之外, 你还能撤销以前做的改变,回到你以前备份文件的时间点.
历史视图同时支持 StarTeam 给你的项目提供更加完全的团队视图历史列表(参考ALM部分)
浮动的VCL设计器
Borland Delphi 2005 现在提供了对自由浮动设计器的选择, 就象以前的Delphi7和更前的版本(相对于固定设计器的Delphi8). 默认的情况是使用嵌入式的设计器, 但是你能在Delphi的提供的选项中找到对应的VCL设计器的那个对话框, 然后去除嵌入设计器的选项来取消嵌入效果.
Delphi 2005 工具选择对话框
这个功能不仅能让你同时观察你的Form设计情况和源代码, 还让你能够在设计时同时观察多个Form和数据模块.
同步编辑
Borland Delphi 2005 提供一个新的同步编辑功能,
请发表评论