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;
[解决办法]