目录
RAD Studio 11 Alexandria发布网络研讨会视频:
VCL 表单设计器的高 DPIVCL 表单设计器的高 DPIVCL 表单设计器的高 DPI
DelphiLSP兼容Visual Studio Code和其他代码编辑器
TRichEdit组件更新到RichEdit 4.1 (MSFTEDIT.dll)
Google Play Billing Library Version 4
改进了通用集合单元System.Generics.Collections.pas
RTTI运行时类型识别(Run-Time Type Identification)
01、如何让Embarcadero RAD Studio Delphi 11兼容Windows XP
02、string[]字符串索引Index、TStringHelper索引、RTL函数的索引
05、emb质量问题提交网址,比如:https://quality.embarcadero.com/browse/RSP-37997注册地址:https://my.embarcadero.com
06、官方D11.1.X补丁修正的质量问题2022-04-28(感谢红鱼儿测试并提交)
RAD Studio 11 Alexandria发布网络研讨会视频:
RAD Studio 11 Alexandria发布网络研讨会视频_pulledup的博客-CSDN博客 (中文可下载)
官方原文:
原文如上,根据自己的理解部分整理如下:
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中你得改为: |
pidAndroid32Arm | pidAndroidArm32 |
pidAndroid64Arm | pidAndroidArm64 |
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”。
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编译器问题(在某些平台上)。