第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我得到一個“枚舉類型”的“類型沒有類型信息”錯誤

為什么我得到一個“枚舉類型”的“類型沒有類型信息”錯誤

繁星淼淼 2019-11-20 09:42:25
我聲明了以下枚舉類型,我希望第一個成員的序數(shù)值為1(一個),而不是通常的0(零):  type    TMyEnum = (               meFirstValue = 1,               meSecondValue,               meThirdValue              );如果我調(diào)用TypeInfo(),例如,作為對GetEnumName()的調(diào)用的一部分,則會出現(xiàn)編譯器錯誤:  GetEnumName(TypeInfo(TMyEnum), Ord(aValue));錯誤:“ E2134:類型'TMyEnum'沒有typeinfo”為什么是這樣?我知道,只有在啟用$ M編譯器選項或(從某些類(例如TPersistent)派生)進行編譯的情況下,類才具有typeinfo ,但我認為為枚舉類型使用typeinfo并不存在任何特殊條件。
查看完整描述

3 回答

?
交互式愛情

TA貢獻1712條經(jīng)驗 獲得超3個贊

不連續(xù)的枚舉,以及不是從零開始的枚舉,都沒有typeinfo。要實現(xiàn)typeinfo tkEnumeration,由于向后兼容性問題,它的格式必須與現(xiàn)有格式不同。


我考慮過tkDiscontiguousEnumeration為Delphi 2010 實現(xiàn)一個(或可能命名更好的成員),但是考慮到它們的相對稀缺性以及枚舉的困難,收益似乎很小-您如何有效地編碼范圍?有些編碼在某些情況下更好,而在另一些情況下則更糟。


查看完整回答
反對 回復(fù) 2019-11-20
?
烙印99

TA貢獻1829條經(jīng)驗 獲得超13個贊

當(dāng)您想將枚舉轉(zhuǎn)換為特定值(并返回)時,我通常使用每個枚舉值所需的值創(chuàng)建一個數(shù)組const:


Const MyEnumValues: array[TMyEnum] of integer = (1,2,5);

這樣,當(dāng)枚舉擴展時,您會得到一個編譯器錯誤,指出您缺少數(shù)組值。


請注意,更改枚舉順序時,必須相應(yīng)更改值。


要獲取枚舉值的“值”,只需編寫:


Value := MyEnumValues[myenum];

為了獲得基于“值”的枚舉值,只需循環(huán)MyEnumValues的值即可:


Function GetEnumByValue(value:integer): TMyEnum;

Var

  myenum: TMyEnum;

Begin

  For myenum = low(TMyEnum) to high(TMyEnum) do

    If MyEnumValues[myenum] = value then

      exit(myenum);

  Raise exception.create(‘invalid value for tmyenum’);

End;


查看完整回答
反對 回復(fù) 2019-11-20
  • 3 回答
  • 0 關(guān)注
  • 699 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號