Delphi通过表单传递多维数组

时间:2018-04-16 09:26:22

标签: arrays delphi

背景:

我有两种形式。在form1上创建一个数组,它需要传递给procedureX的form2。该数组是一个字符串数组的数组,是动态的。该数组在procedureX中使用,然后传回。像以下一样疏散:

  

procedure ProcedureX(var multidimensionalarray:string of array of array);

错误:

我知道这会带来错误,因为你无法通过多维数组。您得到的错误是:E2029预期的标识符,但'数组'找到。从这个网站:https://blog.spreendigital.de/2016/08/01/pass-a-multidimensional-array-as-a-parameter-with-a-hidden-caveat/我知道你需要创建一个类型。

但由于我的问题背景,我有疑问: - 我会在form1或form2中创建类型吗? - 你如何在表格之间传递一种类型?

我还没有任何代码,因为我不知道从哪里开始。我对代码不熟悉并且不知道在哪里看。我知道这个问题已被多次询问,因为我的程序是在一个表单而我的数组在另一个表单上,我不知道该怎么做。

1 个答案:

答案 0 :(得分:4)

我会在第3单元中进行类型定义 - f.ex。:

UNIT MyTypes;

INTERFACE

TYPE
  TStrArr    = ARRAY OF STRING;
  TStrArrArr = ARRAY OF TStrArr;

IMPLEMENTATION

END.

然后在Form1和Form2的单位中使用该单位:

UNIT Main;

INTERFACE

USES ..., MyTypes;

TYPE
  TForm1 = CLASS(TForm)
             .
             .
             .
             PROCEDURE ProcedureX(VAR MultiDimensionalArray : TStrArrArr);
             .
             .
             .
           END;

我们的想法是在每个需要引用多维数组类型的地方使用MyTypes单元(f.ex.声明该类型的变量,或传递该类型的参数)而不是使该单元( MyTypes)可以依赖项目中的任何其他内容。