想把初始化动作用很简单的代码实现,不想写成几十行冗长的代码。

解决方案 »

  1.   

    定义了一个数组,数组里面的数据是固定的,比如表格抬头,但是有很多列,比如十几列。我想弄一个循环语句就把它初始化了,不想写好几十行代码。比如:
      A[0][0]:='1';
      A[0][1]:='序号';A[1][0]:='2';
      A[1][1]:='名称';
      
      A[2][0]:='3';
      A[2][1]:='姓名';我直接就这样写 :set([['1','序号'],['2','名称'],['3','姓名']]);在函数里面循环赋值即可。
      

  2.   

    写了个示例代码, 供lz参考; lz可以使用结构体, 也可以写成二维数组
    procedure TForm16.btn1Click(Sender: TObject);
    type
      TCol = record
        col1, col2 : string;
      end;
      TCols = array of Tcol;  procedure AssingValues(ACols : TCols; const Values : array of string);
      var
        ValIdx, ColsIdx : integer;
      begin
        ValIdx := Low(Values);
        while (ValIdx <= High(Values)) do
        begin
          ColsIdx := ValIdx div 2;      if (colsIdx < Low(ACols)) or (colsIdx > High(ACols)) then
            Break;      if Odd(ValIdx) then
            ACols[ColsIdx].col2 := Values[ValIdx]
          else
            ACols[ColsIdx].col1 := Values[ValIdx];      Inc(ValIdx);
        end;
      end;
    var
      vCols : TCols;
    begin
      SetLength(vCols, 3);
      AssingValues(vCols, ['1', 'a', '2', 'b', '3', 'c', '4', 'd']);
    end;
      

  3.   

    按你的需求改成这样既可
    procedure TForm16.btn1Click(Sender: TObject);
    var
      vCols : array of array[0..1] of string;  procedure AssingValues(const Values : array of string);
      var
        ValIdx, ColsIdx : integer;
      begin
        ValIdx := Low(Values);
        while (ValIdx <= High(Values)) do
        begin
          ColsIdx := ValIdx div 2;      if (colsIdx < Low(vCols)) or (colsIdx > High(vCols)) then
            Break;      if Odd(ValIdx) then
            vCols[ColsIdx][1] := Values[ValIdx]
          else
            vCols[ColsIdx][0] := Values[ValIdx];      Inc(ValIdx);
        end;
      end;begin
      SetLength(vCols, 3);
      AssingValues(['1', 'a', '2', 'b', '3', 'c', '4', 'd']);
    end;不建议这么搞, 不安全, 杂乱; 结构定义清楚, 赋值过程写清晰了就可以, 没必要追求这种...
      

  4.   

    比楼主要的,稍稍多了一点点东西.
    调用时候:settl([row([1, 2, 4]), row([1, 2, 3, 4])]);
    实现:
    type
      TRwoItem = array of Variant;function row(value: array of Variant): TRwoItem;
    var
      i: Integer;
    begin
      SetLength(Result, Length(value));
      for i := Low(Result) to High(Result) do
        Result[i] := value[i];
    end;procedure settl(param: array of TRwoItem);
    var
      row, col: Integer;
    begin
      for row := Low(param) to High(param) do
        for col := Low(param[row]) to High(param[row]) do
        begin
          //param[row][col]
        end;
    end;
      

  5.   

    10楼的,其实就是简单的初始化而已,不过是需要初始化的内容太多,如果一行一行的单独写下来,很占篇幅,看着头痛。11楼的方法倒是一个变通的办法。
    CSDN的网站怎么这么烂,点了引用没反应。
      

  6.   

    不就是数组的初始化吗?请见下:
    var
      MyArray : array [0..2,0..1] of widestring=(('1','序号'),('2','名称'),('3','姓名'));
      

  7.   

    写到Ini文件,然后读Ini文件就可以了。
      

  8.   

    {$J+}
    const
       MyArray : array [0..2,0..1] of widestring=(('1','序号'),('2','名称'),('3','姓名'));
    {$J-}
    此时const不再是常量,而是变量了。
      

  9.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      MyArray:array [0..2,0..1] of widestring=(('1','序號'),('2','名稱'),('3','姓名'));
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      showmessage(MyArray[2][1]);
    end;end.
    Delphi 7編譯通過。