您如何在Delphi 12.2中调用请求Permissions,没有编译器错误? 我正在尝试编写以下代码块,无论我做什么,似乎都遇到了编译器类型的比较问题。 用途 fmx.types, 系统。 androidapi.helpers,// jstringtos ...

问题描述 投票:0回答:1

procedure ( const APermissions: TClassicStringDynArray; const AGrantResults: TArray<string> {TClassicPermissionStatusDynArray}) begin if PermissionsService.IsEveryPermissionGranted(AGrantResults) then

问题是,匿名方法的参数列表和类型应该是什么?  如果我使
AGrantResults

是类型

TClassicPermissionStatusDynArray
,那么由于类型不匹配,我无法调用
PermissionsService.IsEveryPermissionGranted

,如果我将其制作为

TArray<string>
,则编译器与所调用的外部方法不匹配任何过载。 在我看来,这似乎是在RTL本身中可能很糟糕,在Delphi 12.2中破裂的东西并未在较早版本中破裂,或者编译器本身未能认识到两种别名类型实际上是对同一事物的别名,这是
RequestPermissions
.
.。
有某种方法可以进行编译,但要调用
TArray<string>
,还是我应该重写
IsEveryPermissionGranted
本人,这只是一个助手方法? 这里还有其他事情可以使用不同的语法或类型命名吗?


编译器本身未能认识到两种别名类型实际上是同一件事的别名,这就是

IsEveryPermissionGranted


实际上,不。这根本不是编译器错误,请参阅:

type兼容性和身份(Delphi)
android delphi firemonkey delphi-12-athens
1个回答
0
投票

结构类型(Delphi):数组类型和分配


TArray<string>

TClassicStringDynArray

不是TClassicPermissionStatusDynArray的别名,它们是

TArray<string>

的别名,因此它们是独特的类型,并且与彼此或array of string

TArray<string>

不直接兼容。
RequestPermissions()
回回调使用
TClassic...
类型,因此您也需要使用它们。
,但是,
IsEveryPermissionGranted()

使用

TArray<string>

,因此您必须在类型之间明确转换,例如:
将Tarray

转换为tstringdynarray的任何有效方法?

是一个
rtl
错误,而不是

compiler

错误。 您应该将问题报告为emparcadero。 他们在标准化RTL使用TArray方面一直取得了很多进展,但是显然这已经错过了。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.