请问方法参数如何定义数组
首先我const了一个数组
const
arr_Duty1:array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1'));
arr_Duty2:array[0..1, 0..5] of string=(('rb_Duty2','grp_Duty2'),('rb_Duty2','grp_Duty2'),..);
//这个array[X..X,X..X]是不定的
点击按钮,需要运行一个方法,方法参数为上述的不定多维数组,请问这个参数怎么定义?在方法里怎么调用?我个人觉得只能是传指针了。但传进去指针后如何调用呢?
procedure TFrm_Statistics.rb_Duty1Click(Sender: TObject);
begin
IniState(Pointer(arr_Duty)); //我暂时是这么写的
end;
procedure TFrm_Statistics.IniState(arr: PVarArray);
begin
// showmessage(Length(arr),Length(arr[Low(arr)]))
//但传进来后不知道该怎么写了
end;
[解决办法]
Const
arr_Duty1: array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1'));
arr_Duty2: array[0..2, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1') , ('a','b'));
type
TConstStringList = array [0..0] of String;
PConstStringList = ^TConstStringList;
procedure Doit(aArray : PConstStringList; AllLen : integer);
var
i : integer;
begin
for i:=0 to AllLen-1 do
ShowMessage(aArray^[i]);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Doit(@arr_Duty1 , 4);
Doit(@arr_Duty2 , 6);
end;
无法获取长度,需要传递一个长度参数进去