如何對列舉和字串互相轉換 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
解決: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30610 的問題 此作業的最佳解法為利用 RTTI 的方式來進行. 配合 TypInfo 中的 GetEnumvalue 及 GetEnumName 來進行轉換的作業. 列舉為一有序的數列, 第一個列舉數為 0, 可以利用 Ord 來轉型取得其順序, 例如: type
TOrdinalType = (otFirst, otSecond, otThird); 其中 Ord(otFirst) = 0, Ord(otSecond) = 1 ..... 接下來就可以利用下面的兩個函式進行互轉的動作.
uses TypInfo; . . . . //由字串轉為列舉 function StrToTOrdinalType(FStr: String): TOrdinalType; var i : integer; begin i := GetEnumValue( TypeInfo(TOrdinalType) , FStr ); Result := TOrdinalType(i); end; //由列舉轉為字串 function TOrdinalTypeToStr(FOrdinalType: TOrdinalType): String; begin Result := GetEnumName( TypeInfo(TOrdinalType) , Ord(FOrdinalType)); end; //測試段: procedure TForm1.Button3Click(Sender: TObject); begin showmessage(TOrdinalTypeToStr(otFirst)); //檢驗是否可以由 otFirst 轉為 'otFirst' if StrToTOrdinalType('otFirst') = otFirst then Showmessage('Right'); //檢驗是否可以由 'otFirst' 轉為 otFirst end;接下來如何應用就看各位的巧思了... 發表人 - |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |