首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

settl([['1''测试'],['2''测试'],['3'

2013-08-01 
settl([[ɱ','测试'],[ɲ','测试'],[ɳ','测试&

settl([['1','测试'],['2','测试'],['3','测试']]); 如何定义这个函数[参数]?
想把初始化动作用很简单的代码实现,不想写成几十行冗长的代码。
[解决办法]
这是要干啥?你说说目的吧。。
[解决办法]
初始化是啥,对象的初始化?
如果是对象的初始化,就定义个N个参数的构造函数

如果不是说对象初始化,同样也可以把你所谓的“初始化”工作封装到一个函数里,
调用时把需要初始化的数据作为参数传进去
[解决办法]
用循环赋值不行么。。
[解决办法]
写了个示例代码, 供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;

[解决办法]
比楼主要的,稍稍多了一点点东西.


调用时候: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;
[解决办法]

引用:
10楼的,其实就是简单的初始化而已,不过是需要初始化的内容太多,如果一行一行的单独写下来,很占篇幅,看着头痛。

11楼的方法倒是一个变通的办法。
CSDN的网站怎么这么烂,点了引用没反应。

不就是数组的初始化吗?请见下:
var
  MyArray : array [0..2,0..1] of widestring=(('1','序号'),('2','名称'),('3','姓名'));
[解决办法]
写到Ini文件,然后读Ini文件就可以了。
[解决办法]
{$J+}
const
   MyArray : array [0..2,0..1] of widestring=(('1','序号'),('2','名称'),('3','姓名'));
{$J-}
此时const不再是常量,而是变量了。
[解决办法]
有时
初始化操作是必要的

热点排行