الصانعين مجهول سجل في دلفي
-
03-07-2019 - |
سؤال
هل من الممكن استخدام سجلات كمعلمة طريقة، والذي يطلق عليه دون أن تعلن ضمنيا مثيل سجل قال؟
وأود أن تكون قادرة على كتابة التعليمات البرمجية مثل هذا.
type
TRRec = record
ident : string;
classtype : TClass;
end;
procedure Foo(AClasses : array of TRRec);
وثم استدعاء الأسلوب مثل هذا أو شيئا من هذا القبيل.
Foo([('Button1', TButton), ('Lable1', TLabel)]);
وأنا لا تزال عالقة في دلفي 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]) من مجموعة في إعلان مجموعة، والسجلات anomymous، ومجموعة ليست).
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