当前位置:  开发笔记 > 编程语言 > 正文

如何在没有数组变量的情况下传递值数组?

如何解决《如何在没有数组变量的情况下传递值数组?》经验,为你挑选了1个好方法。



1> LU RD..:

更改SetColumns为采用const打开数组:

procedure SetColumns(  vColumns       : TVirtualTreeColumns;
                       const vNames   : array of string;
                       const vWidths  : array of integer);
var i:integer;
begin
  if Length(vNames) <> Length(vWidths) then
    raise Exception.Create('vNames and vWidth should have same number of elements!')
  else
  begin
    vColumns.Clear;
    for i := 0 to High(vNames) do
      with vColumns.Add do
      begin
        Text := vNames[i];
        Width := vWidths[i];
      end;
  end;
end;

在数组周围添加括号使用Open Array构造函数:

SetColumns(VST.Header.Columns,['#','First name','Last name','Address'],[50,20,20,50]);

另一种替代方法(使用堆来分配数组):

SetColumns( VST.Header.Columns,
            TArray.Create('#','First name','Last name','Address'),
            TArray.Create(50,20,20,50));

圣诞节奖金更新

在评论中,OP询问如何以类似的方式在括号中传递记录数组.

步骤1:

声明一个静态类函数作为返回记录的记录的成员:

Type
  TMyRecord =
    record
      myName: string;
      myValue: integer;
      class function Init(const aName: String; aValue: Integer): TMyRecord; static;
    end;

class function TMyRecord.Init(const aName: String; aValue: Integer): TMyRecord;
begin
  Result.myName := aName;
  Result.myValue := aValue;
end;

第2步:

SetValues2使用静态初始化函数调用您的过程:

procedure SetValues2(const vArr: array of TMyRecord);
begin
  ;
end;

SetValues2([TMyRecord.Init(' a ',1),TMyRecord.Init(' b ',2),TMyRecord.Init(' c ',3)]);

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有