现手上有个程序,先把数据库里满足一定条件的记录取出来,然后用结构体数组来打包,问题就在这个把字段值放进一个先定义好的结构体数组里面,这个是先定义好的,结构体里的元素是按着数据库里表的字段来定的,而取出来有多少条记录就定义一个有多少元素的动态结构数组,
而我想做一个通用的方支或者函数,因为一个表有几十个字段,有十多张表,如果每访问一个结构体里的元素都要一个一个明确在程序里指出,那样代码会很长。可是不知道如何未知的去访问一个结构体里的元素,不像数组可以用一个变量自加的方式来访问,下面跟出代码,大家帮我看看。procedure THJWXPYaYunFrm.BtnPackClick(Sender: TObject);
var i,a,k,col_count,temp_col:Integer;
b:Boolean;
begin
k:=0;
for i:=1 to SG1.RowCount-1 do
begin
sg1.GetCheckBoxState(1,i,b);
if b = True then
inc(k);
end;
SetLength(Data_Pack.WXPYZ_Array_Pack,k);
col_count:=SG1.ColCount;
ShowMessage(IntToStr(col_count));
a:=1;
for i:=0 to k-1 do
begin
for temp_col:=3 to col_count do
begin
sg1.GetCheckBoxState(1,a,b);
if b = True then
Data_Pack.WXPYZ_Array_Pack[i].CC:=SG1.Cells[temp_col,a];
Inc(a);
end;
end;
ShowMessage('ok');end;这段是试验代码,就在加红色这句,如何去访问那个.cc,因为还有其它字段,如果明确写也可以,就是太多了,一个结构按一个表,就定义几十个字段,十几张表的话,代码就太多了,我想用两个for循环来做,不过就是不清楚如何去访问结构体里的元素,不知大家能懂我的意思不?
而我想做一个通用的方支或者函数,因为一个表有几十个字段,有十多张表,如果每访问一个结构体里的元素都要一个一个明确在程序里指出,那样代码会很长。可是不知道如何未知的去访问一个结构体里的元素,不像数组可以用一个变量自加的方式来访问,下面跟出代码,大家帮我看看。procedure THJWXPYaYunFrm.BtnPackClick(Sender: TObject);
var i,a,k,col_count,temp_col:Integer;
b:Boolean;
begin
k:=0;
for i:=1 to SG1.RowCount-1 do
begin
sg1.GetCheckBoxState(1,i,b);
if b = True then
inc(k);
end;
SetLength(Data_Pack.WXPYZ_Array_Pack,k);
col_count:=SG1.ColCount;
ShowMessage(IntToStr(col_count));
a:=1;
for i:=0 to k-1 do
begin
for temp_col:=3 to col_count do
begin
sg1.GetCheckBoxState(1,a,b);
if b = True then
Data_Pack.WXPYZ_Array_Pack[i].CC:=SG1.Cells[temp_col,a];
Inc(a);
end;
end;
ShowMessage('ok');end;这段是试验代码,就在加红色这句,如何去访问那个.cc,因为还有其它字段,如果明确写也可以,就是太多了,一个结构按一个表,就定义几十个字段,十几张表的话,代码就太多了,我想用两个for循环来做,不过就是不清楚如何去访问结构体里的元素,不知大家能懂我的意思不?
var i,a,k,col_count,temp_col:Integer;
b:Boolean;
begin
k:=0;
for i:=1 to SG1.RowCount-1 do
begin
sg1.GetCheckBoxState(1,i,b);
if b = True then
inc(k);
end;
SetLength(Data_Pack.WXPYZ_Array_Pack,k);
col_count:=SG1.ColCount;
ShowMessage(IntToStr(col_count));
a:=1;
for i:=0 to k-1 do
begin
for temp_col:=3 to col_count do
begin
sg1.GetCheckBoxState(1,a,b);
if b = True then
Data_Pack.WXPYZ_Array_Pack[i].CC:=SG1.Cells[temp_col,a];
Inc(a);
end;
end;
ShowMessage('ok');end;
可以以ini的方式存放到一个字符串,内容是:属性名=值;属性名=值;属性名=值;...
这样,数量不限,大小不限(当然最多2G),按名访问当然,在内存里,也可以是Thashstringlist