天天看点

二维数组

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  I,J:Integer;
  //ARR1: array [3,5]of string;//報錯![Error]: '..' expected but ',' found
  //ARR1: array [3][5]of string;//報錯![Error]: '..' expected but ',' found
  //下面這2種定義二維數組的方式都是可以的哦:
  //ARR1: array [0..2] of array [0..4] of string;
  ARR1: array[0..2,0..4]of string;
begin
  //Randomize ;
  Memo1.Clear ;
  for I:=0 to 2 do //第一維
  begin
    for J:=0 to 4 do //第二維
    begin
     // ARR1[I,J]:=Random(50);
      ARR1[I,J]:='I='+INTTOSTR(I)+';J='+IntToStr(J);
       Memo1.Lines.Add(ARR1[I,J]);
    end;

  end;
  Memo1.Lines.Add('總數:'+IntToStr(Memo1.Lines.Count));//15
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i,j:Integer;
  //Arr: array of array of string;  //定義多維數組
  //arr1:array of Integer; //定義一維數組
  Arr:array of array of Integer; //定義多維數組
begin
  {SetLength(Arr,3,5);  //為多維數組分配空間,第一維3個元素,第二維5個元素
  Arr[0,3] := 100;     //賦值
  ShowMessage(IntToStr(Arr[0,3]));  //取值
  }
  //SetLength(Arr1,5);
  Memo1.Clear;
  SetLength(Arr,5); //二維數組初始化,里層先設置再到外層;一來就定義了一個二維數組,所以這個是先給裡面的二維數組初始化分配空間。

  {SetLength(Arr[0],2);
  SetLength(Arr[1],3);
  SetLength(Arr[2],4);
  SetLength(Arr[3],4);
  SetLength(Arr[4],4);}
  for i:=0 to 4 do
  case i  of
    0:
      begin
        SetLength(Arr[i],2);
        for j:=0 to 1 do
        begin
          ARR[I,J]:='I='+INTTOSTR(I)+';J='+IntToStr(J);
          Memo1.Lines.Add(ARR[i,j]);
        end;
      end;
    1:
      begin
        SetLength(Arr[i],3);
        for j:=0 to 2 do
        begin
          ARR[I,J]:='I='+INTTOSTR(I)+';J='+IntToStr(J);
          Memo1.Lines.Add(ARR[i,j]);
        end;
      end;
    2:
      begin
        SetLength(Arr[i],4);
        for j:=0 to 3 do
        begin
          ARR[I,J]:='I='+INTTOSTR(I)+';J='+IntToStr(J);
          Memo1.Lines.Add(ARR[i,j]);
        end;
      end;
    3:
      begin
        SetLength(Arr[i],4) ;
       for j:=0 to 3 do
        begin
          ARR[I,J]:='I='+INTTOSTR(I)+';J='+IntToStr(J);
          Memo1.Lines.Add(ARR[i,j]);
        end;
      end;
    4:
      begin
        SetLength(Arr[i],4);
        for j:=0 to 3 do
        begin
          ARR[I,J]:='I='+INTTOSTR(I)+';J='+IntToStr(J);
          Memo1.Lines.Add(ARR[i,j]);
        end;
      end;
  end;


end;

end.