目录
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函数的索引
RAD Studio 11 Alexandria发布网络研讨会视频_pulledup的博客-CSDN博客 (中文可下载)
官方视频youtu ( 境外,需墙 )
What's New - RAD Studio
原文如上,根据自己的理解部分整理如下:
欢迎页面(略)
开放工具 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)。这仅仅是一种视觉上的缩放,位置不变。
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像VCL一样,统一了设计时的视觉效果。移动或调整组件大小时会显示组件的大小和位置变化的视觉效果。
控件提供了对齐两侧的参考线,并显示标准边距与基线的距离。
表单和组件大小调整控件,现具有与 VCL 表单设计器相同的外观和感觉。
(略),意思如下:
1、在VSC中搜索安装扩展:
2、更多信息,请参阅此处。
Code Insight的替换品,它是一个后台进程服务:
当你切换Build Configuration或切换Target PlatForm时,或在单元代码中用Ctrl + 鼠标左键打开Uses代码或函数等时,或鼠标停留在方法、属性等代码上时,或为组件增加'.'点号等等的时候,LSP均会工作,为你解析代码:
Delphi 经典代码完成功能已从 IDE 中删除。Delphi Code Insight只在LSP选项可用。
比如执行Git的时候,构建事件可以在您的系统上执行任意命令。IDE会为你发出警示。
再比如,安装完成Delphi11启动画面的警告:
代码编辑器默认字体为Consolas。其他常见的编码字体,例 Fira Code,随IDE一起安装。
请注意,编辑器不支持<音>集结音符或<印>连体字母,但它的确使用这些新字体清晰地呈现高 DPI 文本。
“查看消息”View Messages现已恢复到编辑器的上下文菜单中。
工作完成后,LSP的进度条将被隐藏。
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 文件夹下找到通用二进制文件。
在 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;
为更新的指令集引入了对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
兼容性和智能指针(略):主要是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 文件的问题已解决。
重点是消除了一些XP遗留问题和与Win10的不一致,并改进了核心库。
1、增加了平台支持
2、TDBRichEdit.Lines现为Public属性。RichEdit URL可检测比如EnableURLs、ShowURLHint 和 SetSelTextToFriendlyURL等。3、RichEdit新增文本属性:如背景颜色、禁用、隐藏、链接、偏移、RevAuthor 和下标。
4、TParaAttributes 也有新的类型和新的属性。
5、TCustomRichEdit现有一个新的Public方法。
对VCL应用程序,默认字体现在是Segoe UI 9,即emoji的默认字体。VCL样式的标题字体也用了相同的默认字体。
在TCustomComboBox类中公开,在TComboBox 类中发布。
- 常见对话框如何公开 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 现在在受保护的部分中声明。
专注于某些核心重构,尤其是桌面和Windows。
现在macOS和MSWindows的平台服务重构为单独的单元。
扩展了IFMXMultiDisplayService多显示器服务接口和TDisplay显示类,将所有与Metrics指标相关的服务写到FMX.Platform.Metrics.pas这个独立的单元中,约束表单的Size,并重构了如下几个服务接口:
IFMXSaveStateService
IFMXDeviceService
IFMXVirtualKeyboardService
IFMXTimerService
IFMXLoggingService
IFMXMenuService
和VCL一样,通过平台 WebView 2组件扩展了对Chromium Edge的支持。
TWebBrowser新的WindowsEngine属性:可用于选择浏览器的引擎。
(略)。
- 支持针对 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 位作为活动目标平台。
- 右键单击库节点。
- 单击将系统文件还原为默认菜单项。
RAD核心库中有许多改进,下面,我们总结了 RTL、FireDAC、HTTP 和 REST 客户端库等方面的关键变化:
讨厌呀,应当保持原有的编写风格保持不变,新增这个平台标识符不就完了!!!这样的haul,又要去改以前的代码!!!
RTL为macOS/Arm64平台添加了一个新的平台标识符 pidOSXArm64。
D10.4.2用的是: | D11中你得改为: |
pidAndroid32Arm | pidAndroidArm32 |
pidAndroid64Arm | pidAndroidArm64 |
pidOSXArm64(新增) |
现在,D11中所有与平台相关的标识符都使用相同的编译器格式和顺序:
1、添加了对 Zip64 的支持以及在 TZipFile 中删除文件的方法。
2、TZipHeader 有一个 GetFIleName 方法。
3、TZipFile.IsValid() 接受一个流参数。
4、\source\rtl\common\System.Zip.pas单元现在可处理大于4GB的文件。
1、对 64 位编译器下较大内存结构的数据类型的正确使用进行了一些改进。比如,64 位的 TMemoryStream支持大于2GB的数据结构。
2、新方法TThread.GetTickCount64(而现有的TThread.GetTickCount返回一个 32 位值,为兼容性老版本RTL做了保留)。
1、新的TDateTimeHelper,包括一个“UTC Now”函数(在以前的Date RTL 中不可用),实际上称为 NowUTC。
2、TCurrency 数据类型的新帮助类,TCurrencyHelper,类似于 TDoubleHelper。
包括经典蓝牙(classic Bluetooth)和LE蓝牙(Bluetooth LE) 以及它们的大多数平台,特别关注 Windows 10 和 Android(还有 iOS 和 macOS)。改进还包括Beacons支持。
1、D11之前某些泛型集合曾经使用TKey和TValue作为泛型类型的符号名称SymbolicNames 。这令人困惑,因为 TValue 是 RTL 中的特定类型。
2、为避免混淆,符号名称SymbolicNames已更改。对现有代码没有影响,因为在实例化泛型类型时符号名称SymbolicNames已被替换为具体类型Concrete Types。此外,集合类几乎没有额外的构造函数,它们将数组值作为参数,包括:
procedure DoCheckStateChanged(Node: TTreeNode; CheckState: TNodeCheckState); virtual; constructor TList.Create(const Values: array of T); constructor TDictionary .Create(const AItems: array of TPair );
3、TDictionary Capacity、GrowThreshold 和 hashing 的实现得到了改进,在性能/内存使用/最小冲突之间取得了更好的平衡。
4、内部实现类 TListHelper 已被删除,以支持使用强类型字段 TArray
1、RTTI 支持开放数组了:允许通过 RTTI 调用以开放数组open array作为参数的方法。
2、TVirtualMethodInterceptor在虚拟方法中拦截器中支持开放数组作为参数。
3、TValue 新增了对 TDateTime 的特定的支持。
4、改进了TValue 和 Variant 类型之间的互转。
TThreadPoolStats.Get方法现已Public,更易与线程池通讯。
1、新类TPointerStream,通过指明指针的位置和大小,允许使用 TStream的接口读取内存数据和写入内存数据。
2、TStream.CopyFrom函数不再需要设置大小Size了,因为它可能未知。当 Count 很大时,该方法进行了优化(提高了 400%的性能)。
1、改进了字符串和日期之间的反向转换。值得注意的是,现在 StrToDate 严格遵循 'to date' 格式字符串,支持带有月和日名称的日期格式。
2、格式串:支持包含任意文本的日期格式。
3、改进了与 TFormatSettings 日期/时间相关的属性初始化,统一了所有平台上的表达。
System.Generics.Defaults.pas单元:
System.Generics.Defaults._MakeInterfaceInstance创建一个接口实例,其中所有接口方法都由匿名方法表示。
System.pas单元:
System.TNoRefCountObject:非引用计数的 IInterface 实现(替换旧的同时感觉命名很怪异的类TSingletonObject【以前我翻译为单实例对象,理解为不能多线程并发方式运行的对象】)。
- 优化了 _FinalizeRecord 和 _FinalizeArray
- 旧的 TDatamodule.OldCreateOrder 属性已被删除,并且始终默认为 true。如果该属性存在于表单描述文件中,它将被忽略(但不会产生错误)。在很久以前的 Delphi 的早期版本中,遗留属性用于与旧的创建顺序逻辑兼容。
- 改进了Pascal的System.Pos
- 优化了TArray
.BinarySearch - 新增了 TList
.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 中定义
- 将ParseJSONValue函数从TJSONObject类移植到TJSONValue类(注意一下:有可能会改变量类型)
- 为整数Integer添加了可重载的 TJSONObject.AddPair方法
1、删除了函数: UTF8ToString(const S: _PAnsiChr);
不推荐使用UTF8ToString(字节数组)。
2、解决方法,请参阅System.UTF8ToString。
- PostgreSQL 驱动程序支持 PostgreSQL 最高 v 13,包括支持 PostgreSQL存储过程
- 官方支持 Oracle 19c 和 Oracle 的存储过程:128 个字符的参数名称。
- 使用 soDigitsAsNumbers 扩展 TFDSortOption,匹配 System.SysUtils 中类似的 TCompareOption。
- Firedac 监视器的 UI 的改进。
- 改进了Firebird驱动程序:将在 VendorHome 中而不是在 /bin 子文件夹中查找驱动程序(这兼容了旧版本的Firebird)
- 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 属性。
1、用变量Web.Win.ISAPIThreadPool.StackSize,使得ISAPI DLL线程具有可配置的StackSize。
2、在发送/流式传输大于 2 GB (MaxInt) 的文件时,显着提高了服务的性能。
支持Multipart/form-data了。
现可使用基于TDSMethodMapEvent事件新机制来配置REST URI。
(略)。
- 支持高 DPI 屏幕上正确显示。单
- ......(略)
- 安装速度更快:复杂功能的下载是通过并行而不是按顺序下载多个文件来实现的。下载和提取压缩文件之间也存在并行性,而功能的安装则按顺序进行。
简述为: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
{$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}
// .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
//
// RSP-9763 TArray.Copy
// 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