RAD Studio 11.X Alexandria release有何新的改变及改变实务

目录

RAD Studio 11 Alexandria发布网络研讨会视频:

官方原文:

IDE 增强

IDE支持高DPI

VCL 表单设计器的高 DPIVCL 表单设计器的高 DPIVCL 表单设计器的高 DPI

FMX 表单设计器支持高 DPI

设计器中 VCL的 样式的呈现

表单设计与代码编辑

选项对话框的性能

FMX设计参照和边距

DelphiLSP兼容Visual Studio Code和其他代码编辑器

DelphiLSP的改进

构建事件的警告

其他方面IDE的改进

Delphi工具链的改进 

新的 macOS ARM 64 位目标平台

通用二进制文件

MacOS运行时刻库中弃用的单元

二进制文字和数字分隔符

内联汇编器支持 AVX 指令 (AVX-512)

C++ 工具链改进

类型转换

其他

VCL和FMX的变化

TRichEdit组件更新到RichEdit 4.1 (MSFTEDIT.dll)

VCL现代化

新默认字体

TMemo和RichEdit的边距(略)

无frame的Radio group组件(略)

新增TComboBox下拉宽度属性(略)

TTreeView支持复选框(略)

TWICImage多帧支持(略)

新组件TLabelDBEdit(略)

改进错误消息(略)

支持Coolbar Chevron (略)

数字框(略)

线程安全改进(略)

VCL StyleUtils.inc 转换为常规单位(略)

较小的变化

FMX的改进

FMX.Platform.Metrics.pas

Google Play Billing Library Version 4

支持Android 30的API

RTL和Data

平台标识符Platform Identifiers

运行时刻库RTL:TZipFile

运行时刻库RTL关于大内存数据结构的改进

新的关于记录类型的系列帮助类Record Helpers

蓝牙和 BLE 改进

其他RTL功能的增强

改进了通用集合单元System.Generics.Collections.pas

RTTI运行时类型识别(Run-Time Type Identification)

PPL并行库

Streams流

Dates和String互转

接口实例化的创建

新的系统级别的TNoRefCountObject类

做了的优化和其他改变

JSON

删除了UTF8ToString

FireDAC数据库访问组件库

Internet、HTTP 和 REST客户端库

Internet服务端技术

WebBroker

RAD Server

DataSnap

安装程序改进

也可以看看

D11的改变实务

01、如何让Embarcadero RAD Studio Delphi 11兼容Windows XP

02、string[]字符串索引Index、TStringHelper索引、RTL函数的索引

03、关于UNICODE与字符串

04、安卓特别压缩格式

05、emb质量问题提交网址,比如:https://quality.embarcadero.com/browse/RSP-37997注册地址:https://my.embarcadero.com

06、官方D11.1.X补丁修正的质量问题2022-04-28(感谢红鱼儿测试并提交)

07、待续


RAD Studio 11 Alexandria发布网络研讨会视频:

RAD Studio 11 Alexandria发布网络研讨会视频_pulledup的博客-CSDN博客 (中文可下载)

官方视频youtu  ( 境外,需墙 )

官方原文:

What's New - RAD Studio

原文如上,根据自己的理解部分整理如下:

IDE 增强

IDE支持高DPI

VCL 表单设计器的高 DPIVCL 表单设计器的高 DPIVCL 表单设计器的高 DPI

FMX 表单设计器支持高 DPI

欢迎页面(略)

开放工具 API 更改(略)

        VirtualImageList加入的集合中的图片,可以呈现不同分辨率,方便在不同场景中使用:比如App启动画面的Splash闪屏、关于About Box、IDE Insight和窗体的其它设计区域。

        以上这几部分内容,核心的改变:过去同样的代码,放到不同像素密度(DPI)的设备屏幕下去运行,其显示行为会有所不同,现在统一了。什么意思呢,比如:

The FireMonkey designer scales a form the same way a FMX form does at runtime. Coordinates remain the same (that is, a button placed at (20, 20) will be at (20, 20) no matter the high DPI scaling of the monitor the FMX designer is on.) It is a visual scaling only.

        在Delphi 11.0中,FMX会让运行时以设计时的方式进行缩放。
        坐标保持不变(即:无论FMX设计器启用高DPI监视器的缩放,设计时位于点(20,20)的按钮,在运行时都将位于点(20,20)。这仅仅是一种视觉上的缩放,位置不变。

设计器中 VCL的 样式的呈现

        1、默认:为打开次功能选项。

        可以在Tools Options ---> User Interface ---> Form designer中,打开Option Name设置为“Enable VCL Styles”。

        2、StyleName属性编辑器:项目中的可用样式,并呈现预览(比如按钮的外观)。

        3、若选择“Windows”,则表示选用了平台样式Platform,否则为样式化的控件Style。如果属性置空,将使用其父控件(或父窗体)的样式:

表单设计与代码编辑

        D10.4.2 中,在A窗口中设计某表单时,它的“设计”选项卡是被禁用;在D11中该选项卡始终处于启用状态。
        但如果它是在A窗口中设计的,则会显示一条消息;您可以单击按钮将“设计”选项卡放到当前窗口。 

选项对话框的性能

        (略)。

FMX设计参照和边距

        现在,FMX像VCL一样,统一了设计时的视觉效果。移动或调整组件大小时会显示组件的大小和位置变化的视觉效果。
        控件提供了对齐两侧的参考线,并显示标准边距与基线的距离。
        表单和组件大小调整控件,现具有与 VCL 表单设计器相同的外观和感觉。

DelphiLSP兼容Visual Studio Code和其他代码编辑器

        (略),意思如下:

        1、在VSC中搜索安装扩展:

         2、更多信息,请参阅此处

DelphiLSP的改进

         Code Insight的替换品,它是一个后台进程服务:

         当你切换Build Configuration或切换Target PlatForm时,或在单元代码中用Ctrl + 鼠标左键打开Uses代码或函数等时,或鼠标停留在方法、属性等代码上时,或为组件增加'.'点号等等的时候,LSP均会工作,为你解析代码:

          Delphi 经典代码完成功能已从 IDE 中删除。Delphi Code Insight只在LSP选项可用。 

构建事件的警告

          比如执行Git的时候,构建事件可以在您的系统上执行任意命令。IDE会为你发出警示。

          再比如,安装完成Delphi11启动画面的警告:

其他方面IDE的改进

          代码编辑器默认字体为Consolas。其他常见的编码字体,例 Fira Code,随IDE一起安装。
请注意,编辑器不支持<音>集结音符或<印>连体字母,但它的确使用这些新字体清晰地呈现高 DPI 文本。
          “查看消息”View Messages现已恢复到编辑器的上下文菜单中。
          工作完成后,LSP的进度条将被隐藏。 

Delphi工具链的改进 

新的 macOS ARM 64 位目标平台

          RAD Studio 11.0 支持新的 Delphi 目标平台,macOS ARM 64 位,以原生的方式将新的 M1 Apple Silicon CPU 与 macOS 11 结合起来。您可以使用这个平台来构建原生的 M1 应用程序(当然这需要 M1 硬件来运行)。我们将Intel 64-bit目标支持和通用二进制应用程序的创建保留在单个包中,包括 ARM 和Intel二进制文件。

通用二进制文件

          您可以创建一个包含 Intel 和 ARM 代码的通用二进制文件。为此,请确保目标平台是 macOS ARM 64-bit。在项目选项中(确保macOS ARM 64-bit是当前的Target),导航到Building > Delphi Compiler > Compiling > Other,然后选中“生成 macOS 通用二进制文件 (x86_64 + arm64)”。确保部署应用程序,您可以在 OSXARM64\Debug 文件夹下找到通用二进制文件。

MacOS运行时刻库中弃用的单元

          在 RAD Studio 11.0 版本中,\source\rtl\osx\Macapi.QTKit.pas在 macOS/X64 上已弃用,并已从 macOS/Arm64 库中删除。我们还从 macOS/X64 和 Arm64 库的产品中删除了Macapi.Quicktime.pas

二进制文字和数字分隔符

          Olympus 中,Delphi 语言增加了对二进制文字的支持,以及十进制文字十六进制文字。二进制文字使用 % 符号作为前缀(与其他 Pascal 编译器使用的语法相同):

const
  Four = %100;
var
  x: Integer;
begin
  x := %1001001;

          该语言还引入了一个数字分隔符,可用于提高具有多个数字的文字值的可读性。分隔符是下划线“_”,在解析和编译代码时基本被忽略。这与 C# 7.0 中引入的功能非常相似。

          当然,您可以对二进制文字使用数字分隔符:

const
  AMillion = 1_000_000;

内联汇编器支持 AVX 指令 (AVX-512)

          为更新的指令集引入了对ASM代码的支持,包括 AVX2 (ymm) 和 AVX512 (zmm​​)。

          测试环境:与AVX-512兼容的CPU(比如:INTEL的最新CPU)。详情:

https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX-512          https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX-512

C++ 工具链改进

          兼容性和智能指针(略):主要是Delphi与C++之间的RTTI类的兼容性和智能指针。

类型转换

          RTL 现在包括用于在 Delphi 类型和 C++(和 Delphi)字符串之间进行类型转换的辅助方法。这包括从 TDateTime 到字符串类型的转换,以及能够轻松地将 C++ 字符串转换(分配)到 Delphi 字符串,以及在 Delphi 字符串上使用 std::string_view。与字符串的类型转换现在有许多类型to_string()from_string()方法可以与字符串(UnicodeString、WideString 和 AnsiString,包括由代码页模板化)进行​​转换。这些方法适用于以下类型:

  • 货币
  • 日期时间
  • 32 位和 64 位有符号和无符号整数类型
  • 浮点类型(作为扩展)
  • 变体

其他

  • 当接口不是从 IUnknown 派生时,Clang 编译器现在会发出警告。
  • 您现在可以使用 C++ Win64 调试器附加到进程。
  • 项目的批处理编译忽略 .c 文件的问题已解决。

VCL和FMX的变化

          重点是消除了一些XP遗留问题和与Win10的不一致,并改进了核心库。

TRichEdit组件更新到RichEdit 4.1 (MSFTEDIT.dll)

          1、增加了平台支持
          2、TDBRichEdit.Lines现为Public属性。RichEdit URL可检测比如EnableURLs、ShowURLHint 和 SetSelTextToFriendlyURL等。

          3、RichEdit新增文本属性:如背景颜色、禁用、隐藏、链接、偏移、RevAuthor 和下标。

          4、TParaAttributes 也有新的类型和新的属性。

          5、TCustomRichEdit现有一个新的Public方法。

VCL现代化

新默认字体

          对VCL应用程序,默认字体现在是Segoe UI 9,即emoji的默认字体。VCL样式的标题字体也用了相同的默认字体。

TMemo和RichEdit的边距(略)

无frame的Radio group组件(略)

新增TComboBox下拉宽度属性(略)

          在TCustomComboBox类中公开,在TComboBox 类中发布。

TTreeView支持复选框(略)

TWICImage多帧支持(略)

新组件TLabelDBEdit(略)

改进错误消息(略)

支持Coolbar Chevron (略)

数字框(略)

线程安全改进(略)

VCL StyleUtils.inc 转换为常规单位(略)

较小的变化

  • 常见对话框如何公开 EncodingIndex 和 ShowEncodingList 属性(控制是否启用下拉编码列表并因此可用)
  • TTrackbar 的 OnTracking 事件(当轨迹栏上的拇指位置发生变化时触发)。
  • 使用附加 CheckTabEnabled 参数在 TPageControl.FindNextPage 中禁用跳过的选项。
  • TButtonCategory 有一个 VisibleGutter 属性。
  • TDateTimePicker 和 TRichEdit 在未启用时正确显示。
  • 在此版本中,TScrollBox 自动支持鼠标滚轮——请注意,此更改可能会以不需要的方式影响现有应用程序的行为,因为新的默认设置是为没有焦点的控件激活鼠标滚轮滚动。(我认为反而搞麻烦了,这样对其中动态产生的子控件的点击等事件,是个麻烦事!)
  • VCL 函数 ScaleImage 支持 Alpha 通道。
  • TVirtualImageList.Images 有一个合适的属性设置器。
  • TTreeNode 提供对 nsDropHilited 状态的支持。
  • 默认表单大小现在更大。
  • SetSelText 和 SetSelTextBuf 提供不重置撤消缓冲区的选项。
  • 这是由一个新的属性 CanUndoSelText 管理的。默认情况下为 False,以保持向后兼容性。如果设置为 True,则它允许调用 Undo(或使用 UI 调用 Undo 操作)以撤消通过调用 SetSelText 或 SetSelTextBuf 或通过分配给 SelText 属性所做的更改。
  • 一些小的 TEdgeBrowser 改进。
  • TCustomTitleBarPanel 现在具有 TitleButtonClose、TitleButtonRestore、TitleButtonMin 属性和 OnUpdateTitlebarButtons 事件。
  • TDateTimePicker 允许在 UI 中同时更改日期和时间
  • TPngImage 对象处理分配到 TWICImage 对象和从 TWICImage 对象分配
  • TWinControl 现在支持 LockDrawing 和 UnlockDrawing,触发 WM_SETREDRAW Windows 消息的执行:
  • 方法 TWinControl.LockDrawing 禁用控件更新
  • 方法 TWinControl.UnlockDrawing 启用控件更新
  • 如果调用了 LockDrawing(并且未调用 UnlockDrawing),则属性 TWinControl.IsDrawingLocked 返回 True
  • 禁用 Win32 控件绘制时,属性 TWinControl.RedrawDisabled 返回 True
  • 在 Vcl.Styles 单元中,TCustomStyle 类 FCustomElements 和 FSource 现在在受保护的部分中声明。

FMX的改进

          专注于某些核心重构,尤其是桌面和Windows。

          现在macOS和MSWindows的平台服务重构为单独的单元。

FMX.Platform.Metrics.pas

          扩展了IFMXMultiDisplayService多显示器服务接口和TDisplay显示类,将所有与Metrics指标相关的服务写到FMX.Platform.Metrics.pas这个独立的单元中,约束表单的Size,并重构了如下几个服务接口:

IFMXSaveStateService
IFMXDeviceService
IFMXVirtualKeyboardService
IFMXTimerService
IFMXLoggingService
IFMXMenuService

          和VCL一样,通过平台 WebView 2组件扩展了对Chromium Edge的支持。

          TWebBrowser新的WindowsEngine属性:可用于选择浏览器的引擎。

Google Play Billing Library Version 4

          (略)。

支持Android 30的API

  • 支持针对 Android API 30(2021 年的 Google Play 商店要求)
  • 从旧的“支持库”库迁移到新的“AndroidX”库

          此外,对于 Android,RAD Studio 现在支持“multidex”功能(允许您的应用生成多个“classes.dex”文件)并使用更新的“D8”DEX 编译器而不是旧的“DX”编译器来编译 Java 字节码到 DEX 之一。新版本包括一组不同的 Java 库,这使得旧项目不兼容。当您使用旧版 RAD Studio 打开 Android 项目构建时,您需要:

  • 导航到 Projects 可停靠窗口。
  • 选择 Android 32 位或 Android 64 位作为活动目标平台。
  • 右键单击库节点。
  • 单击将系统文件还原为默认菜单项。

RTL和Data

          RAD核心库中有许多改进,下面,我们总结了 RTL、FireDAC、HTTP 和 REST 客户端库等方面的关键变化:

平台标识符Platform Identifiers

          讨厌呀,应当保持原有的编写风格保持不变,新增这个平台标识符不就完了!!!这样的haul,又要去改以前的代码!!!

           RTL为macOS/Arm64平台添加了一个新的平台标识符 pidOSXArm64。

D10.4.2用的是:D11中你得改为:
pidAndroid32ArmpidAndroidArm32
pidAndroid64ArmpidAndroidArm64
pidOSXArm64(新增)

           现在,D11中所有与平台相关的标识符都使用相同的编译器格式和顺序: <Platform name> <Architecture name> <Bitness>,你若在自己的代码中使用了以前就的顺序,现在都得改过来。

运行时刻库RTL:TZipFile

           1、添加了对 Zip64 的支持以及在 TZipFile 中删除文件的方法。

           2、TZipHeader 有一个 GetFIleName 方法。

           3、TZipFile.IsValid() 接受一个流参数。

           4、\source\rtl\common\System.Zip.pas单元现在可处理大于4GB的文件

运行时刻库RTL关于大内存数据结构的改进

           1、对 64 位编译器下较大内存结构的数据类型的正确使用进行了一些改进。比如,64 位的 TMemoryStream支持大于2GB的数据结构。

           2、新方法TThread.GetTickCount64(而现有的TThread.GetTickCount返回一个 32 位值,为兼容性老版本RTL做了保留)。

新的关于记录类型的系列帮助类Record Helpers

           1、新的TDateTimeHelper,包括一个“UTC Now”函数(在以前的Date RTL 中不可用),实际上称为 NowUTC。

           2、TCurrency 数据类型的新帮助类,TCurrencyHelper,类似于 TDoubleHelper。

蓝牙和 BLE 改进

           包括经典蓝牙(classic Bluetooth)和LE蓝牙(Bluetooth LE) 以及它们的大多数平台,特别关注 Windows 10 和 Android(还有 iOS 和 macOS)。改进还包括Beacons支持。

其他RTL功能的增强

改进了通用集合单元System.Generics.Collections.pas

           1、D11之前某些泛型集合曾经使用TKey和TValue作为泛型类型的符号名称SymbolicNames 。这令人困惑,因为 TValue 是 RTL 中的特定类型。

           2、为避免混淆,符号名称SymbolicNames已更改。对现有代码没有影响,因为在实例化泛型类型时符号名称SymbolicNames已被替换为具体类型Concrete Types。此外,集合类几乎没有额外的构造函数,它们将数组值作为参数,包括:

procedure DoCheckStateChanged(Node: TTreeNode; CheckState: TNodeCheckState);
virtual;
    constructor TList<T>.Create(const Values: array of T);
    constructor TDictionary<TKey, TValue>.Create(const AItems: array of TPair<TKey, TValue>);

           3、TDictionary Capacity、GrowThreshold 和 hashing 的实现得到了改进,在性能/内存使用/最小冲突之间取得了更好的平衡。

           4、内部实现类 TListHelper 已被删除,以支持使用强类型字段 TArray<T>,更新了所有相关的流streaming和数据映射data mapping的代码。

RTTI运行时类型识别(Run-Time Type Identification)

           1、RTTI 支持开放数组了:允许通过 RTTI 调用以开放数组open array作为参数的方法。

           2、TVirtualMethodInterceptor在虚拟方法中拦截器中支持开放数组作为参数。

           3、TValue 新增了对 TDateTime 的特定的支持。

           4、改进了TValue 和 Variant 类型之间的互转。

PPL并行库

           TThreadPoolStats.Get方法现已Public,更易与线程池通讯。

Streams

           1、新类TPointerStream,通过指明指针的位置和大小,允许使用 TStream的接口读取内存数据和写入内存数据。

           2、TStream.CopyFrom函数不再需要设置大小Size了,因为它可能未知。当 Count 很大时,该方法进行了优化(提高了 400%的性能)。

Dates和String互转

           1、改进了字符串和日期之间的反向转换。值得注意的是,现在 StrToDate 严格遵循 'to date' 格式字符串,支持带有月和日名称的日期格式。

           2、格式串:支持包含任意文本的日期格式

           3、改进了与 TFormatSettings 日期/时间相关的属性初始化,统一了所有平台上的表达

接口实例化的创建

           System.Generics.Defaults.pas单元:

           System.Generics.Defaults._MakeInterfaceInstance创建一个接口实例,其中所有接口方法都由匿名方法表示。

新的系统级别的TNoRefCountObject类

           System.pas单元:

           System.TNoRefCountObject非引用计数的 IInterface 实现(替换旧的同时感觉命名很怪异的类TSingletonObject【以前我翻译为单实例对象,理解为不能多线程并发方式运行的对象】)。

做了的优化和其他改变

  • 优化了 _FinalizeRecord 和 _FinalizeArray
  • 旧的 TDatamodule.OldCreateOrder 属性已被删除,并且始终默认为 true。如果该属性存在于表单描述文件中,它将被忽略(但不会产生错误)。在很久以前的 Delphi 的早期版本中,遗留属性用于与旧的创建顺序逻辑兼容。
  • 改进了Pascal的System.Pos
  • 优化了TArray<T>.BinarySearch
  • 新增了 TList<T>.Sort( ..., Index, Count ) 重载
  • 新增 System.IOUtils.TFile.Size
  • ClassParent 和 InitInstance 的 TObject 性能修复
  • 改进了一些System.IOUtils.TPath的bug
  • 若操作系统支持(例如在最新版本的 Windows 上),RTL 支持超过 260 个字符的系统路径。
  • 添加了类属性 TThread.OnSynchronize,线程同步可以事件的方式感知和通讯了。
  • EInOutError 和 EInOutArgumentException:I/O消息现在包含路径中并具有 Path 字段。

改进了性能:

  • _UInt32ToHexString 和 _UInt64ToHexString
  • TSingleHelper 和 TDoubleHelper 的解析和 TryParse

TGUID 数据结构现仅在 System.pas 中定义

JSON

  • 将ParseJSONValue函数从TJSONObject类移植到TJSONValue类(注意一下:有可能会改变量类型)
  • 为整数Integer添加了可重载的 TJSONObject.AddPair方法

删除了UTF8ToString

           1、删除了函数: UTF8ToString(const S: _PAnsiChr);不推荐使用UTF8ToString(字节数组)。

           2、解决方法,请参阅System.UTF8ToString

FireDAC数据库访问组件库

  • PostgreSQL 驱动程序支持 PostgreSQL 最高 v 13,包括支持 PostgreSQL存储过程
  • 官方支持 Oracle 19c 和 Oracle 的存储过程:128 个字符的参数名称。
  • 使用 soDigitsAsNumbers 扩展 TFDSortOption,匹配 System.SysUtils 中类似的 TCompareOption。
  • Firedac 监视器的 UI 的改进。
  • 改进了Firebird驱动程序:将在 VendorHome 中而不是在 /bin 子文件夹中查找驱动程序(这兼容了旧版本的Firebird)

Internet、HTTP 和 REST客户端库

  • Backend 和 EMS 客户端组件的超时机制:
  • TEMSProvider、TKinveyProvider、TParseProvider 类有 2 个新属性:ConnectTimeout 和 ReadTimeout
  • TEMSApi.TConnectionInfo、TParseApi.TConnectionInfo、TKinveyApi.TConnectionInfo:有变量 ConnectTimeout 和 ReadTimeout
  • TDSRestConnection:属性连接超时ConnectionTimeOut生效了。
  • Windows下支持HTTP / 2版本协议了 
  • 新增属性:THttpClient.ProtocolVersion协议版本可设置了
  • 新属性:TNetHttpClient.ProtocolVersion协议版本可设置了
  • 新增类TBase64URLEncoding编码和 新增属性TNetEncoding.Base64URL
  • 整个 RTL 中,从 GetHostByName 切换到 GetAddrInfo,跨所有平台。
  • 新增TCertificate.PublicKey,包含公钥模块
  • ContentType 现改为字符串类型,而非以前的枚举类型。这允许您使用任何一种内容类型字符串。此外,TRestRequest 中的新 CustomContentType
  • Windows下TNetHTTPClient中支持TLS 1.3
  • TSocket的多项改进
  • 新组件TRESTRequestDataSetAdapter简化了用JSON将TDataSet(如TFDMemTable)数据上传到服务器的过程。它是服务器端的REST组件的配套组件TRESTResponseDataSetAdapter的姐妹。
  • TRestClient 组件显示底层 HTTPClient 组件的 SecureFailureReasons 属性。

Internet服务端技术

WebBroker

           1、用变量Web.Win.ISAPIThreadPool.StackSize,使得ISAPI DLL线程具有可配置的StackSize。

           2、在发送/流式传输大于 2 GB (MaxInt) 的文件时,显着提高了服务的性能。

RAD Server

           支持Multipart/form-data了。

DataSnap

           现可使用基于TDSMethodMapEvent事件新机制来配置REST URI。

安装程序改进

           (略)。

  • 支持高 DPI 屏幕上正确显示。单
  • ......(略)
  • 安装速度更快:复杂功能的下载是通过并行而不是按顺序下载多个文件来实现的。下载和提取压缩文件之间也存在并行性,而功能的安装则按顺序进行。

也可以看看

D11的改变实务

01、如何让Embarcadero RAD Studio Delphi 11兼容Windows XP

        简述为:Delphi 11 正式不再支持 Windows XP。您可以通过简单的设置使您的应用程序再次兼容 XP。
        Project Options|Building|Delphi Compiler|Linking:“Set OS Version fields in PE Headers”和“Set SubSystem Version fields in PE Headers”设置为“5.1”。

如何让Embarcadero RAD Studio Delphi 11兼容Windows XP_Delphi开发局QQ群:32422310-CSDN博客Delphi11WindowsXPcompatibilitytweakByMichalMutlAsyoulikelynoticed,Delphi11officiallydoesnotsupportWindowsXPanymore.YoucanmakeyourapplicationcompatiblewithXPagainbysimpleset.InProjectOptions|Building|DelphiCompiler|Lin...https://blog.csdn.net/xyzhan/article/details/120304310

02、string[]字符串索引Index、TStringHelper索引、RTL函数的索引

{$IFDEF VCL_10_4_OR_ABOVE}
  // 0-based string indexing via '[]' is turned off by default in Delphi 10.4.
  // TStringHelper is always 0-indexed, flat RTL functions are always 1-indexed,
  // and now '[]' is 1-indexed again on all platforms - {$ZEROBASEDSTRINGS OFF}
  // is the default.
  {.$UNDEF HAS_DIRECTIVE_ZEROBASEDSTRINGS}
{$ENDIF}

03、关于UNICODE与字符串

// .NET and Delphi 2009+ support UNICODE strings natively!
 .NET 和 Delphi 2009+以上原生支持UNICODE
// FreePascal 2.4.0+ supports UnicodeString, but does not map its
// native String type to UnicodeString except when {$MODE DelphiUnicode}
// or {$MODESWITCH UnicodeStrings} is enabled.  However, UNICODE is not
// defined in that mode yet until its RTL has been updated to support
// UnicodeString.  STRING_UNICODE_MISMATCH is defined when the native
// String/Char types do not map to the same types that APIs are expecting
// based on whether UNICODE is defined or not.
//
// NOTE: Do not define UNICODE here.  The compiler defines
// the symbol automatically.
{$IFDEF STRING_IS_UNICODE}
  {$IFNDEF UNICODE}
    {$DEFINE STRING_UNICODE_MISMATCH}
  {$ENDIF}
{$ELSE}
  {$DEFINE STRING_IS_ANSI}
  {$IFDEF UNICODE}
    {$DEFINE STRING_UNICODE_MISMATCH}
  {$ENDIF}
{$ENDIF}

{$IFDEF DCC_NEXTGEN}
  {$DEFINE NO_ANSI_TYPES}
  {.$DEFINE STRING_IS_IMMUTABLE} // Strings are NOT immutable in NEXTGEN yet
  {$IFDEF USE_OBJECT_ARC}
    // TODO: move these to an appropriate section. Not doing this yet because
    // it is a major interface change to switch to Generics and we should
    // maintain backwards compatibility with earlier compilers for the time
    // being. Defining them only here for now because the non-Generic versions
    // of these classes have become deprecated by ARC and so we need to start
    // taking advantage of the Generics versions...
    {$DEFINE HAS_UNIT_Generics_Collections}
    {$DEFINE HAS_UNIT_Generics_Defaults}
    {$DEFINE HAS_GENERICS_TDictionary}
    {$DEFINE HAS_GENERICS_TList}
    {$DEFINE HAS_GENERICS_TObjectList}
    {$DEFINE HAS_GENERICS_TThreadList}
    // TArray<T>.Copy() was introduced in XE7 but was buggy. It was fixed in XE8:
    //
    // RSP-9763 TArray.Copy<T> copies from destination to source for unmanaged types
    // https://quality.embarcadero.com/browse/RSP-9763
    //
    {$IFDEF VCL_XE8_OR_ABOVE}
      {$DEFINE HAS_GENERICS_TArray_Copy}
    {$ENDIF}
  {$ENDIF}
{$ENDIF}

// TODO: Ansi data types were disabled on mobile platforms in XE3, but
// UTF8String and RawByteString were re-enabled in 10.1 Berlin! What else,
// if anything, was re-enabled to facilitate that?
//
// UPDATE: In 10.4 Sydney, AnsiChar and AnsiString were re-enabled on
// mobile platforms!  NEXTGEN is no longer defined in the mobile compilers.
{$IFDEF NO_ANSI_TYPES}
  {$UNDEF HAS_AnsiString}
  {$UNDEF HAS_AnsiChar}
  {$UNDEF HAS_PAnsiChar}
  {$UNDEF HAS_PPAnsiChar}
  {$UNDEF HAS_AnsiStrings_StrPLCopy}
  {$UNDEF HAS_AnsiStrings_StrLen}
{$ENDIF}
 

04、安卓特别压缩格式

D:\Delphi11.0Update0\PlatformSDKs\AndroidSDK-2525-21.0.38860.1461\build-tools\29.0.3\lib\apksigner.jar 

05、emb质量问题提交网址,比如:
https://quality.embarcadero.com/browse/RSP-37997
注册地址:
https://my.embarcadero.com

06、官方D11.1.X补丁修正的质量问题2022-04-28(感谢红鱼儿测试并提交)

RSP-37880 无法调试 iOS
RSP-37760 使用 ImageList 导致 IDE 崩溃
RSP-37733 在DynamicAppearance中使用TListView从表单继承时侵犯IDE访问。
RSP-37690 GridPanel扩展在终端应用程序的表单内存泄漏——如果根本不使用,也一样
RSP-37667无法将请求的类安装在单个DEX文件中(#方法:71471 > 65536)
RSP-37665 经典编译器的代码洞察被破坏
Android64上SysUtils.Pop中的RSP-37662分割故障(11)
RSP-37609 PAServer附带Python 2.7依赖项——这些依赖项在macOS 12.3中不再可用
RSP-37408 延迟标志破坏了 Exe 的 ASLR 功能
RSP-37378内存泄漏
C++中包含Delphi代码的RSP-35040 64位数据包无法运行

我们还解决了MongoDB事务的问题,带有TGPUObjectsPool类var实例的FireMonkey内存(与RSP-37690相关联),以及与AtomicCmpExchange128相关的Delphi编译器问题(在某些平台上)。

07、待续

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: TMS Web Core是一款在RAD Studio 11 Alexandria环境下的开发工具,版本号为v1.8.5.0,发布于2021年9月15日。它是一种用于Web应用程序开发的框架,支持多种语言(如Delphi、C ++和JavaScript)的开发人员使用相同的代码库来构建跨平台的Web应用程序。 在这个版本中,TMS Web Core引入了一些的功能和改进,例如的主题系统,以及更好的跨平台支持。同时,它还修复了一些Bug和改善了性能。 的主题系统使开发人员能够轻松地更改Web应用程序的外观和风格,以适应不同的网站和目标受众。这个功能可以帮助开发人员提高Web应用程序的用户体验,从而更好地满足客户的需求。 另外,TMS Web Core还改善了Web应用程序在不同平台上的响应速度和性能表现,从而使开发人员可以实现更好的用户体验和响应性。 总之,TMS Web Core是一款了不起的开发工具,它能够帮助开发人员快速构建高质量的Web应用程序,同时提高生产效率和开发质量。如果你是一个Web开发人员,这个工具绝对值得一试。 ### 回答2: TMS Web Core V1.8.5.0是一款基于Delphi编程语言的工具,可以帮助开发人员轻松构建Web和移动端应用程序。 该工具最版本是V1.8.5.0,于2021年9月15日发布,支持使用Rad Studio 11 Alexandria进行开发。该版本在之前版本的基础上进行了多项改进和优化,包括增强了框架的稳定性和性能,提高了开发人员的工作效率。同时,该版本还提供了大量的功能和改进,例如可以实现真正的实时Web应用程序和可视化的Web设计功能,极大地方便了开发人员的工作。 总之,TMS Web Core V1.8.5.0是一款功能强大、易于使用的开发工具,可以帮助开发人员快速构建出高品质的Web和移动端应用程序,是Delphi开发者的不可或缺的好帮手。 ### 回答3: TMS Web Core是一款强大的Web开发框架,它允许开发人员使用Delphi和Lazarus创建Web和移动应用程序,能够通过JavaScript使用可视化开发工具和语言,为用户提供丰富的应用体验。最版本TMS Web Core v1.8.5.0为Rad Studio 11 Alexandria平台增加了的特性和功能,使得开发工作更加高效和便捷。本次更主要包括以下几个方面的改进: 首先,TMS Web Core v1.8.5.0为Rad Studio 11 Alexandria平台增加了对最JavaScript、HTML和CSS技术的支持,开发人员可以更方便地实现各种Web应用的开发需求。 其次,更后的TMS Web Core增强了WebAssembly技术的支持,WebAssembly是一种跨平台、高性能的代码执行技术,可以实现在Web浏览器中高效地执行各种语言的应用程序。 此外,TMS Web Core v1.8.5.0还为移动开发提供了更好的支持,它可以帮助开发人员快速构建适配各种移动设备的Web应用程序。 总的来说,TMS Web Core v1.8.5.0为Rad Studio 11 Alexandria带来了更丰富的功能和更高效的开发体验,这将进一步加快Web和移动应用程序的开发速度,提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pulledup

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值