الأنواع المذكورة مع قيم محددة لا تحتوي على نوع ، لماذا؟ [مكرر
سؤال
هذا السؤال لديه بالفعل إجابة هنا:
باستخدام 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.
لا تنتمي إلى StackOverflow