说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何用动态数组做为过程的参数传递?

编辑:说三道四文库 发布时间:2018-07-20 11:03
HTML文档下载 WORD文档下载 PDF文档下载
我用一个带有数据参数的过程,在过程中重新分配数组的大小,但是系统提示不兼容类型错误,问如何在过程中重新分配数组参数的大小?
例:
interface
Procedure SetL(var a:Array of integer);

implementation

procdure SetL(var a:Array of integer);
begin
    SetLength(a,2); //Error:InCompatible types
    a[0]=1;
    a[1]=2;
end;

急,谢!!!!
type
  TMyStr = array of string;

var
  s: TMyStr;
begin
  SetLength(s,10);
  Proc(s);
end;

procedure Proc(AMyStr: TMyStr);
begin
  ...
end;
资料,供参考:

问:我用procedure Proc(var A:array[1..10] of integer);怎么都不能编译通过,难道Delphi不能传递数组作为参数吗?

答:必须先用Type定义一下即可:
type
  TProcArray=array[1..10] of integer;

procedure Proc(var A:TProcArray);
这样就没有问题了,而且对于动态数组也可以用上面的方法!使用动态数组的时候,有一个问题是如何遍历每一个数据项?采用类似的代码即可:
procedure Proc(var A:TProcArray);
var
  i:integer;
begin
  ....
  for i:=Low(A) to High(A) do
   /// A[i]就是每一个数据项
  ....
end;
楼上说的都对!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘