背景:
我有两种形式。在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中创建类型吗? - 你如何在表格之间传递一种类型?
我还没有任何代码,因为我不知道从哪里开始。我对代码不熟悉并且不知道在哪里看。我知道这个问题已被多次询问,因为我的程序是在一个表单而我的数组在另一个表单上,我不知道该怎么做。
答案 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)可以依赖项目中的任何其他内容。