我有一个非常简单的代码段,你可以在这里查看:
{{1}}
如何正确地投射testarray以将其传递给PickValue函数?上面的代码以当前形式崩溃。我正在使用delphi 2007.
提前致谢!
答案 0 :(得分:7)
您无法将该静态数组转换为动态数组。这些类型根本不兼容。静态数组布局在一个连续的内存块中。动态数组在每个维度都间接到可变大小的数组。实际上将其视为具有额外编译器管理和元数据的^^Byte
。没有多少铸件可以帮助你。
您至少有以下选项:
i,j
元素位于线性偏移i*innerDim + j
。 可能不需要指针类型PMatrix
。动态数组已经实现为指针。这似乎是一个间接的程度太远了。
当然,当数组索引仅达到2时要求元素3是不对的,但这是目前你担心的较少。请记住,动态数组是基于零的,并且您已根据静态数组指定了零。
我很难能够推荐哪种解决方案最好,因为根据此处提供的简化示例,我不了解您的真实目标和用法。