求助,在调用的子过程里改变传递过去的动态数组的长度,有什么变通的方法? ( 积分: 100 )

  • 主题发起人 主题发起人 kxgkxg
  • 开始时间 开始时间
K

kxgkxg

Unregistered / Unconfirmed
GUEST, unregistred user!
type
TRecField = record //处理显示字段
Name: string;
Length: Integer;
end;

procedure SetFieldInfo(var sFieldS: array of TRecField);
var
i: Integer;
begin
//-------------------------------------------------------------
//SetLength(sFields, 10);
//上一行有问题,有别的办法解决吗?编译错误提示:incompatible types
//动态数组不能作为参数,虽然写Var 但是好像还是被作为静态数组处理...
//***有什么变通的方法可以斛决,在子过程里改变这个数组的长度**
//-------------------------------------------------------------
for i := Low(sFieldS) to High(sFieldS) do
begin
sFieldS.Name := 'Name' + IntTostr(i)
//字段名
sFieldS.Length := i;
end;
end;

procedure TForm1.Button01Click(Sender: TObject);
var
sFieldS1: array of TRecField;
begin
SetLength(sFieldS1, 0);
SetLength(sFieldS1, 10);
SetFieldInfo(sFieldS1);
end;
 
TRecArray = array of TRecField;

procedure SetFieldInfo(sFieldS: TRecArray);
 
ysai,高,
 
后退
顶部