الأنواع المذكورة مع قيم محددة لا تحتوي على نوع ، لماذا؟ [مكرر

StackOverflow https://stackoverflow.com/questions/3054444

  •  27-09-2019
  •  | 
  •  

سؤال

هذا السؤال لديه بالفعل إجابة هنا:

باستخدام Delphi 2007 يمكنني كتابة الكود التالي:

interface
TTestType = (ttTest1, ttTest2);

procedure enumName;
var
  EnumName: String;
begin
  EnumName := GetEnumName(TypeInfo(TTestType), Ord(ttTest1));
end;

هذا يجمع ويعمل ، يحتوي enumname على "tttest1" في نهاية الوظيفة.

ومع ذلك ، عندما أقوم بتغيير ttesttype إلى شيء مثل هذا:

interface
TTestType = (ttTest1=1, ttTest2=2);

الكود الخاص بي فجأة لن يتجمع بعد الآن. [DCC Error] Test.pas(271): E2134 Type 'TTestType' has no type info

الآن يمكنني صنع مجموعة من الأسلاك مع أسماء التعداد ، لكنني أجد هذا الحل القذر. هل يمكن لأي شخص أن يوجهني في الاتجاه الصحيح أم أنني أحاول شيئًا مستحيلًا هنا؟

هل كانت مفيدة؟

المحلول

لا أرى أي فرق بين المقتطفات ، لكن افترض أنك فعلت شيئًا مثل "ttype = (x = 1 ، y = 2) ؛". من شأنه أن يمنع دلفي من توليد rttinformation. إنه قيود على المترجم على الأقل حتى D2010.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top