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

delphi中的匿名记录构造函数

如何解决《delphi中的匿名记录构造函数》经验,为你挑选了2个好方法。

是否可以将记录用作方法参数,并在不隐式声明所述记录的实例的情况下调用它?

我希望能够编写这样的代码.

type
  TRRec = record
    ident : string;
    classtype : TClass;
  end;

procedure Foo(AClasses : array of TRRec);

然后调用这样的方法或类似的东西.

Foo([('Button1', TButton), ('Lable1', TLabel)]);

顺便说一句,我仍然坚持使用Delphi 5.



1> dan-gph..:

是.几乎.

type
  TRRec = record
    ident : string;
    classtype : TClass;
  end;

function r(i: string; c: TClass): TRRec;
begin
  result.ident     := i;
  result.classtype := c;
end;

procedure Foo(AClasses : array of TRRec);
begin
  ;
end;

// ...
Foo([r('Button1', TButton), r('Lable1', TLabel)]);



2> Name..:

也可以使用const数组,但它不像"gangph"给出的解决方案那么灵活:(特别是你必须在数组中给出数组的大小([0..1]))声明.记录是不合理的,数组不是).

type
  TRRec = record
    ident : string;
    classtype : TClass;
  end;

procedure Foo(AClasses : array of TRRec);
begin
end;

const tt: array [0..1] of TRRec = ((ident:'Button1'; classtype:TButton),
                                   (ident:'Lable1'; classtype:TLabel));

Begin
  Foo(tt);
end.

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