如何确定数组项是否是对其他数组(多维数组)的引用



如何确定数组项是对另一个数组的引用还是另一个类型项(例如Single)

我正在研究这个,因为我想做一个统一的代码,将迭代动态多维数组的所有项目,而不管数组有多少维数。

我需要这个来确定我是否需要递归地遍历表示内部维度的数组或者我是否已经在最内部维度了

我想我可能需要依赖RTTI,但我必须承认,到目前为止我还没有使用RTTI的经验。

我已经找到了解决方案,但它只适用于Delphi的后续版本(在Delphi 10 SeattleDelphi 10.1 Berlin上进行测试),它依赖于我偶然发现的未记录的函数GetTypeKind

if GetTypeKind(SomeVariable) = tkArray then //Returns true if variable references to static array
if GetTypeKind(SomeVariable) = tkDynArray then //Returns true if variable references to dynamic array

它甚至可以用来检查内部数组的项类型

var Dyn2DArray: Array of Array of Integer;
if GetTypeKind(Dyn2DArray[0]) = tkDynArray then //Returns true since item of outmost array is references to inner array
if GetTypeKind(Dyn2DArray[0,0]) = tkDynArray then //Returns false since inner array item is of integer type

相关内容

  • 没有找到相关文章

最新更新