Delphi 10.2 Tokyo的新特性

 

Delphi 10.2(Tokyo)出来一段时间了,最重要的新特性就是支持Linux的服务端。

 

官网有详细的介绍:

 

这里是主要的特性介绍:https://www.embarcadero.com/products/rad-studio/whats-new-in-10-2-tokyo

 

这里是详细的更新清单:http://docwiki.embarcadero.com/RADStudio/Tokyo/en/What%27s_New

================翻译文开始==================

 

RAD Studio 10.2东京版本包含以下新功能和改进功能。

 

Linux

------------------------------

RAD Studio 10.2东京提供了对Delphi语言的Linux支持。编译器已启用ARC,仅支持服务器端应用程序;这包括控制台应用程序,WebBroker和DataSnap应用程序,以及RAD Server开发和部署的支持。应用程序还可以通过FireDAC访问数据。支持的Linux发行版是Ubuntu 16.04 LTS和RedHat Enterprise版本7.在RAD Studio 10.2东京的Linux支持在企业版及以上版本中可用。

Delphi Linux编译器

 

    64位Linux平台支持

    Delphi语言支持

    启用ARC

    1-based字符串

    基于LLVM引擎

 

支持的Linux发行版

 

RAD Studio 10.2东京支持以下Linux发行版:

 

    Ubuntu服务器(Ubuntu 16.04 LTS)

    RedHat Enterprise Linux(版本7)

 

支持RTL功能

 

    Linux文件系统访问

    线程和并行编程库支持

    内存管理

    HTTP和REST库支持HTTP调用

 

用于服务器应用程序的64位Linux

 

用于服务器应用程序的最新RAD Studio技术已获得64位Linux支持。

 

    FireDAC为所有支持Linux的DBMS提供Linux支持,唯一的例外是Informix。请参阅数据库连接。

    WebBroker,RAD服务器(EMS)和DataSnap支持多层服务器(独立和Apache模块)。

    DUnitX支持。

    PAServer支持。

    基于Indy的客户端和服务器支持。

 

FireMonkey

 

------------------------------------

iOS上的新系统状态栏选项

 

在TForm中添加了两个新的属性来更改iOS上的系统状态栏的行为:SystemStatusBar.BackgroundColor和SystemStatusBar.Visibility。

增强TMultiView

 

    使用“已启用”属性关闭与TMultiView的用户交互。

    管理TMultiView中边框外观的新选项。

    TMultiView中对接面板模式的底部和顶部对齐方式。

 

多线程支持TBitmap,TCanvas和TContext3D

 

    TBitmap:完成多线程支持。可以在任何线程中创建,销毁和修改,而无需同步。

    TCanvas:支持从多个线程一次使用,但内部是序列化的。

    TContext3D:支持从多个线程一次使用,但内部是串行化的

 

其他FireMonkey更改

 

    添加了对以下文本控件的ICaption的支持:TText,TStyleTextObject,TActiveStyleTextObject,TTabStyleTextObject和TButtonStyleTextObject。

    FMX对Windows的TWebBrowser的改进。

    TEdit中附加的CharCase属性。

    重新暴露的TStringGrid事件:

        OnCellClick

        OnCellDoubleClick

        OnDragDrop

        OnDragEnter

        OnDragLeave

        OnDragOver

        OnResized

    向TListViewItem添加了TagObject和TagString属性。

    Android上的Delphi和Java线程的统一:CallInUIThread已被弃用。所有代码现在都在Java UI Thread中运行,不需要线程同步。

 

    ProcessMessages方法用于调用CheckSynchronize方法,该方法从Java Native线程调用回调。以前有两个线程:Delphi UI线程和Java Native线程。 10.2中的重构工作之后,只有一个线程:Java Native线程,它接收来自Android的所有通知,并将它们转发到Delphi事件处理程序。当它通过while循环被阻塞时,不能执行任何事件处理程序,从而防止退出循环。如果没有代码保存应用程序主线程,则调用回调和事件。

 

    改进FMX.Platform.Android.pas通过增强FMX.Platform.Device.Android.pas,FMX.Platform.Logger.Android.pas,FMX.Platform.Metrics.Android.pas,FMX.Platform.SaveState.Android.pas ,FMX.Platform.Screen.Android.pas和FMX.Platform.Timer.Android.pas。

    TForm的Release方法已被弃用。

    Android上的ShowModal更改。

 

新的FireMonkey样式

 

为MacOS和Android添加了新的FireMonkey样式。访问FireMonkey样式:

 

    C:\ Users \ Public \ Documents \ Embarcadero \ Studio \ 19.0 \ Styles \ MacOS \ macOSgraphite.fsf

    C:\ Users \ Public \ Documents \ Embarcadero \ Studio \ 19.0 \ Styles \ Android \ AndroidWearDarkBlue.fsf

 

FireDAC和数据库

------------------------------

Firebird的改进

 

    New Direct属性添加对Direct I / O备份功能的支持。

 

MySQL的改进

 

    支持MySQL v 5.7。

    支持MariaDB v 5.5或更高版本。使用FireDAC的MySQL节点连接到MariaDB。

    与最近的MySQL版本5.6.x和5.7.x. Compatibilty

    MySQL准备语句API:现在支持旧的API(MySQL文本协议)和PS API(MySQL准备语句协议)。

        您可以使用TFDResourceOptions.DirectExecute属性选择所需的API。

        根据所使用的API,TFDCommand.CommandIntf.CliObj属性返回TMySQLStatement或TMySQLResult对象。

    支持内部BLOB流(仅限smOpenWrite模式)。

    改进了连接事务状态和TFDConnection.InTransaction属性的同步。此属性允许您确定连接事务当前是否正在进行中。

 

其他FireDAC更改

 

    TFDDataMove组件已从此版本中删除,不再适用于工具选项板。改用TFDBatchMove组件。

 

    注意:如果您需要TFDDataMove作为旧版项目,请使用FireDAC.Comp.DataMove.pas单元,可用于:

 

        开始|程序| Embarcadero RAD Studio 10.2东京|样品,然后导航到:

        对象Pascal \ Comp Layer \ TFDBatchMove \ DataMove_Deprecated

 

    TFDBatchMove已经优化。作为副作用,TFDBatchMoveMappingItem的DestValue和SourceValue属性不再可用。

    TFDMSAccessService现在支持Microsoft Access 2007或更高版本。

    增强TFDMemTable组件在设计时编辑TFDMemTable数据集。现在,TFDMemTable上下文菜单提供了Edit DataSet ...项目,允许您编辑组件数据并将其保存到表单中。数据在运行时可用。

 

    注意:在使用Edit DataSet ...之前,应该为数据集字段TFDMemTable.FieldDefs或创建持久字段指定字段定义。

 

数据库改进

 

    VCL TDBImage直接支持JPEG和PNG图形格式。

    支持BlobFields的显示选项。

    对TField类的直接GUID访问。

 

RTL

 

---------------------------------

HTTP客户端

 

HTTP客户端库提供对64位Linux的支持。

 

改进了HTTP客户端中的异步支持

RTL支持64位Linux

 

RAD Studio 10.2东京提供使用标准系统功能,流和IOUtils单元的Linux文件系统支持。它还为64位Linux提供标准RTL路径功能支持。

应用程序捆绑改进

 

应用程序绑定获得以下功能:

 

    用于TTetheringManager和TTetheringProfile的新SynchronizeEvents属性来控制与主线程的事件同步。因此,管理员和配置文件现在可以控制他们的事件处理程序是否在主线程上执行。

    改进了对日志过滤的支持:添加了更多的日志消息。

 

新的和改进的散列函数

 

System.Hash单元中的以下方法现在接受流或字符串作为输入参数:

    THashMD5.GetHashString

    THashMD5.GetHashBytes

    THASHSHA1.GetHashString

    。。

    THashSHA2.GetHashString

    THashSHA2.GetHashBytes

 

System.Hash单元具有以下新方法,可以从文件获取散列摘要:

    THashMD5.GetHashBytesFromFile

    THashMD5.GetHashStringFromFile

    。。。。。

    THashSHA1.GetHashStringFromFile

    THASHSHA2.GetHashBytesFromFile

    THashSHA2.GetHashStringFromFile

 

移动平台

------------------------------------

改进的移动的C ++包

RAD Studio 10.2东京静态地链接iOS和Android的C ++包。以前版本的RAD Studio生成了C ++包的扩展名为.so的文件,但实际上并不是动态库。 RAD Studio 10.2 Tokyo生成具有正确文件扩展名(.a)的C ++包。如果您静态链接到.so包,则可能需要更改以链接到新的文件名。

RAD服务器多租户支持

 

通过Multi-Tenancy支持,具有单个RAD Server数据库连接的单个RAD Server实例可以支持多个独立的租户。每个租户都有一套独特的RAD服务器资源,包括用户,组,安装,边缘模块和其他数据。所有租户都有安装在EMS服务器中的自定义资源。另外,作为管理员,您可以创建新的租户,编辑现有的租户,添加,编辑或删除租户的详细信息,指定租户是否处于活动状态,并删除不需要的租户。

 

C ++编译器

 

----------------------------------

更好地支持调试

 

在Clang增强编译器中:

 

    现在,使用Win32和Win64的Clang增强编译器构建的代码中的局部变量现在可以在手表或“本地变量”视图中进行评估。

    当代码在方法中的不同作用域中具有两个具有相同名称的局部变量时,变量评估现在可以解析并根据当前位置显示正确的变量。

    类名现在总是显示在调用堆栈中。

    (Clang-enhanced Win32)支持用于调试信息的外部类型文件,从而减少为许多编译单元(例如VCL类型)中使用的常见类型创建的调试信息的重复。这大大减少了构建时生成的调试信息的大小。

 

更好的代码

 

在Clang增强编译器中:

 

    -O1和-O2优化级别的代码已经得到改进,包括解决所有已知问题。

    新支持-O3。 Clang增强型Win32和Win64编译器支持-O3,这是一个强大的优化级别,可能会在一些情况下双重编译代码性能。

 

移动平台支持

 

    可以构建C ++ Android应用程序,无需NDK的特定版本。

 

链接器

 

    C ++链接器有很大的改进:

        改进资源处理来解决堆错误,包括内存不足,VIRDEF,dwarf_str等。

        链接器现在可以使用高达4GiB的内存;它不再局限于2GiB。

        链接器选项已被扩展,允许您为特定类型的调试或链接器数据设置资源分配大小。

 

        虽然大多数项目不是必需的,但这对于非常大的项目或者产生异常数量的链接数据的项目(包括调试信息)非常有用。如果发生链接器错误,可以通过将选项定制到项目的行为来解决。

 

异常处理

 

    对异常处理进行显着的质量改进,解决与内存泄漏有关的错误。

 

IDE

---------------------------------

    Delphi的代码洞察和代码完成现在正确地处理静态和动态数组。

    “查找文件”对话框适用于具有高DPI的屏幕。

    支持不同DPI的设计和开放形式得到改进。

    视图菜单已重新排列。已经将工具窗口(如对象检查器,结构,消息等)移动到现有Debug Windows子菜单下方的“工具Windows”子菜单中,并且新的“编辑器”子菜单包含编辑器上下文菜单中的多个编辑器操作和有用功能。已经移动了其他物品以保持相关物品相邻。

 

    工具Windows子菜单编辑器子菜单

    10.2查看工具Windows.png 10.2 View Editor.png

 

    项目管理器中的代码编辑器选项卡和文件的上下文菜单现在具有“在资源管理器中显示”菜单项,它将在资源管理器中显示文件的位置。

    项目的清单文件支持现在支持多个执行级别:作为Invoker,最高可用和需要管理员,还允许设置UI访问标志。

    即使网络负载较高或网络连接不足,IDE加载速度也应该很快。

    支持建设非常大型的项目组,如拥有一百多个项目的项目组,得到了改善。

 

调试器

 

 

iOS调试器

 

    完全支持iOS10调试(来自10.1柏林修复程序)

    完全支持iOS Simulator调试(来自10.1柏林修复程序) - 仅限Delphi。

    在iOS调试器中支持编写Delphi字符串值

    评估字符数组给出了预期的结果

    结束调试会话的错误(也在macOS上)被解决

 

macOS调试器

 

    完全支持macOS Sierra调试(来自10.1柏林修复程序)

    结束调试会话的错误(也在iOS上)被解决

 

Linux调试器

 

    支持在Linux上调试(仅适用于Delphi)

 

VCL

 

--------------------------------

高DPI修复

 

改进高DPI支持:

 

    现在,正确地调整窗体边界以响应WM_DPICHANGED消息,这意味着TForm.AutoScroll工作正常,以及表单的上/左位置

    当系统具有多个具有不同DPI的监视器时,窗体以正确的缩放因子打开

    TTabSheet和TPageControl,以及放置在标签页或页面控件上的控件

    ActionMainMenuBar将表单移动到具有不同DPI的显示器上时

    VCL菜单(主菜单和弹出菜单)现在可以在高DPI显示器上正确显示

    TStatusBar的高度在高DPI中保持正确

    消息对话框的图标现在可以正确缩放

    当使用不同DPI的显示器之间移动表单时,锚定的控件现在将保持在预期位置

    TCheckBox和TRadioButton正确绘制

    表单继承的几个问题,包括该控件现在使用正确的字体大小放置在面板上,ParentFont在继承的表单上设置为true,并且TListView列大小在继承的表单上保持不变。

 

其他改进

GetIt安装程序

 

    增强并行下载。

 

云(Cloud)

 

    通过更新的API改进了Azure和AWS支持。

 

编译器

 

    Delphi命令行编译器现在已启用大内存地址,允许您从命令行编译较大的应用程序(并在IDE中调用时将编译器的可用内存匹配)。

    假定动态数组是托管类型,涉及引用计数和相关的辅助函数生成,则不允许使用@运算符转换数组元素,因为它会导致内存损坏。在开发人员的责任下,仍然允许使用明确的转换操作执行类似的操作。

 

iOS 10模拟器,设备和macOS

 

    完全支持iOS 10,包括iOS 10 32位和64位在设备上的调试,模拟器支持(仅限Delphi)和macOS Sierra支持。