【问题标题】:how to create procedure having a parameter of two or multi dimensional array?如何创建具有二维或多维数组参数的过程?
【发布时间】:2010-12-11 16:37:20
【问题描述】:

我想为此创建一个程序。

procedure TForm1.Button1Click(Sender: TObject);
var
  a: Array[0..1, 0..2] of TControl; // need to be pass
  tmp: Array[0..1] of TControl;
  i, j, iCnt : Integer;
begin
//-------------------------------------
  a[0][0] := Panel1; //sample data inside the main panel
  a[0][1] := Panel2; 
  a[0][2] := Panel3;
  a[1][0] := Panel4;
  a[1][1] := Panel5;
  a[1][2] := Panel6;
//-------------------------------------

  for i := low(a) to high(a) do
  AutoSizeCtrlWidth(mainpanel, a[i], 20, 20);
  for j := low(a[1]) to High(a[1]) do
  begin
    for i := low(a) to high(a) do
    tmp[i] := a[i][j];
    AutoSizeCtrlHeight(mainpanel, tmp, 20,20);
  end;
// 
end;

例子:

procedure AutoSizeCtrlWidthHeight(AParentCtrl: TControl; arControls: Array of TControl; ASpacing, AMargin: Integer);

如何创建参数为二维或多维数组的过程?

【问题讨论】:

    标签: arrays delphi parameters multidimensional-array procedure


    【解决方案1】:
    type
      TMyDataType = array of array of integer;
    
    procedure MyProcedure(const Data: TMyDataType);
    begin
    end;
    

    【讨论】:

    • 我总是希望数组参数为 const - 我相信你也知道这一点
    • @user205376:是的,这就是它的名称。 Data 是一个二维动态整数数组。
    • 当然您也可以对维度进行硬编码,并使用静态数组。然后const 将变得更加重要(当然,如果您希望它保持不变)。很抱歉,但与 Raymond Chen 不同,我不是通灵者,而且我没有或非常有限的读心能力,所以我不太确定你的抱怨是什么......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 2016-12-27
    相关资源
    最近更新 更多