写了个示例代码, 供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;
按你的需求改成这样既可 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;不建议这么搞, 不安全, 杂乱; 结构定义清楚, 赋值过程写清晰了就可以, 没必要追求这种...
比楼主要的,稍稍多了一点点东西. 调用时候: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;
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','姓名']]);在函数里面循环赋值即可。
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;
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;不建议这么搞, 不安全, 杂乱; 结构定义清楚, 赋值过程写清晰了就可以, 没必要追求这种...
调用时候: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;
CSDN的网站怎么这么烂,点了引用没反应。
var
MyArray : array [0..2,0..1] of widestring=(('1','序号'),('2','名称'),('3','姓名'));
const
MyArray : array [0..2,0..1] of widestring=(('1','序号'),('2','名称'),('3','姓名'));
{$J-}
此时const不再是常量,而是变量了。
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編譯通過。