質問
レコードをメソッドパラメータとして使用し、そのレコードのインスタンスを暗黙的に宣言せずに呼び出すことは可能ですか?
このようなコードを書きたいと思います。
type
TRRec = record
ident : string;
classtype : TClass;
end;
procedure Foo(AClasses : array of TRRec);
次に、このようなメソッドまたは類似のメソッドを呼び出します。
Foo([('Button1', TButton), ('Lable1', TLabel)]);
まだDelphi 5にこだわっています。
解決
はい。ほぼ。
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)]);
他のヒント
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.
所属していません StackOverflow