System.TypInfo.pas
System.TypInfo.hpp
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.TypInfo.GetEnumName
 http://docwiki.embarcadero.com/CodeExamples/Berlin/en/TypInfoGetEnumName_(C%2B%2B)
http://docwiki.embarcadero.com/CodeExamples/Berlin/en/TypInfoGetEnumName_(Delphi)
http://docwiki.embarcadero.com/CodeExamples/Berlin/en/RuntimeErrors_(Delphi)
 
两个枚举函数
GetEnumName
GetEnumNameValue
其他函数参考
GetTypeName
GetPropInfo
GetPropName
GetEnumProp
SetToString
 StringToSet
GetSetElementName
GetSetElementValue

获得枚举字符EnumName

String kindName;

kindName = System::Typinfo::GetEnumName(__delphirtti(TFieldType), curGrid->SelectedField->DataType);

SubName = System::Typinfo::GetEnumName(__delphirtti(TOrdType),                Data->OrdType);

KindName := System.TypInfo.GetEnumName(System.TypeInfo(TTypeKind),      Ord(Info^.Kind));
根据枚举字符串获得枚举值
字符串转为枚举值
    ft := TFieldType(GetEnumValue(TypeInfo(TFieldType),'ft'+SubJson.S[cstFieldType]));  atype := TFieldType(GetEnumValue(TypeInfo(TFieldType),'ftInteger')); 枚举集合Anchors
Anchors: [akLeft,akTop]
tkSet:
begin
List.Add(Tmp + prop.Name + ' (' + string(prop.GetValue(Obj).TypeInfo.Name) + '): ' + prop.GetValue(Obj).ToString);
end;
枚举集合得到全部
Anchors:
akLeft
akTop
akRight
akBottom

tkSet:
begin
List.Add(Tmp + prop.Name + ' (' + string(prop.GetValue(Obj).TypeInfo.Name) + '): ');
GetSetInformation(prop.GetValue(Obj).TypeInfo, Tmp);
end;
下面3个tkSet属性的参考
 http://stackoverflow.com/questions/38192934/know-selected-tkenumeration-from-a-tkset
https://github.com/synopse/mORMot/blob/master/SQLite3/Samples/ThirdPartyDemos/AntonE/ORMCDS/ORMCDS.pas
https://github.com/VSoftTechnologies/Delphi-Mocks/blob/master/Delphi.Mocks.Utils.pas tkSet: result := TValue.FromOrdinal(rttiType.Handle,rttiType.AsOrdinal.MinValue); GetSetProp / SetSetProp 函数
GetSetProp 函数用于获取集合类型属性的字符串值,它也是调用 GetOrdProp 获得属性值,然后调用 SetToString 函数把数值转换成字符串。
SetSetProp 函数用于通过字符串设置集合类型属性的值。它先调用 StringToSet 函数把字符串转换为整数值,然后使用 SetOrdProp 函数设置属性值
例如
Memo1.Lines.Add(GetSetProp(self, 'Anchors', True));
SetSetProp(self.Button8, 'Anchors', '[akLeft,akRight]'); http://stackoverflow.com/questions/38192934/know-selected-tkenumeration-from-a-tkset

GetEnumName 枚举名称 字符串的更多相关文章

  1. C# 枚举、字符串、值的相互转换

    using  System; class  Program{    public   enum  Color   {      Red  =   0xff0000 ,      Orange  =   ...

  2. C# 枚举转字符串

    有时候需要把枚举转字符串,那么如何把枚举转字符串? 枚举转字符串 假如需要把枚举转字符串,可以直接把他进行转换,请看代码 public enum Di { /// <summary> // ...

  3. 2018-2-13-C#-枚举转字符串

    title author date CreateTime categories C# 枚举转字符串 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23:3 ...

  4. 转-C#让枚举返回字符串

    下面的手段是使用给枚举项打标签的方式,来返回字符串 下面分别定义一个属性类,和一个枚举帮助类 [AttributeUsage(AttributeTargets.Field,AllowMultiple  ...

  5. C# 让枚举返回字符串

    下面的手段是使用给枚举项打标签的方式,来返回字符串 分别定义一个属性类,一个枚举帮助类 /// <summary> /// 自定义属性 /// </summary> [Attr ...

  6. 【C#】枚举和字符串以及数字之间的互相转换

    准备条件: ①枚举类型: public enum enumColor { Red = , Yellow, Green, Blue, White, Black } ②以下状态都是理想状态,并未对错误数据 ...

  7. c++ 枚举与字符串 比较

    读取字符串,然后将这个字符转换为对应的枚举. 如:从屏幕上输入'a',则转换为set枚举中对应的a,源代码如下: //关键函数为char2enum(str,temp); #include using ...

  8. oc中枚举映射字符串技巧

    后台返枚举数据给app,app需要对不同枚举转换成字符串显示. 一般想到方法用 switch 根据不同枚举变量返回不同字符串,结果就是判断代码写得很长,不优雅.更简便方式有如下: typedef NS ...

  9. Java名称字符串进行星号处理

    /** * 对字符串处理:将指定位置到指定位置的字符以星号代替 * * @param content * 传入的字符串 * @param begin * 开始位置 * @param end * 结束位 ...

随机推荐

  1. My Reading List - Machine Learning && Computer Vision

    本博客汇总了个人在学习过程中所看过的一些论文.代码.资料以及常用的资源与网站,为了便于记录自身的学习过程,将其整理于博客之中. Machine Learning (1) Machine Learnin ...

  2. Mysql查询架构信息

    今天想给整个数据库做初始化,也就是清空所有表,然后让索引归零,使用truncate table 就可以,但好多张表,怎么批量搞定呢? 有人说重建表吧,dump一下,然后再重建,但我还是想用trunca ...

  3. maven报错【Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of】

    [自己的操作] (1)windows -> Preferences -> maven 的settings.xml文件中.m2的位置已经失效,更改正确后尝试 (2)pom.xml还有下面错误 ...

  4. 二次剩余-Cipolla

    二次剩余 \(Cipolla\) 算法 概述 大概就是在模 \(p\) 意义下开根号,如求解方程\(x^2\equiv n(mod\ p)\). 这里只考虑 \(p\) 为素数的情况.若 \(p=2\ ...

  5. Web应用程序开发知识点回顾

    asp.net 1.<%@ Page Language="C#"AutoEventWireup="true" CodeFile="Home.as ...

  6. {vlFeat}{matlab}{VS2010}{编译配置}

    运行程序需要vlfeat与mex等在matlab与vs2010中配置,碰到了不少困难,下面给出解决方案 1.下载vlfeat,但是vlfeat目录中并没有编译好的mex文件,需要在vs2010中编译 ...

  7. Sprint第一个冲刺(第四天)

    一.Sprint介绍 今天我们完成了点餐界面及美化的任务,是通过TabActivity来实现的,界面可以进行滑动来进行点餐. 下面是实验截图: 任务进度: 二.Sprint周期 看板: 燃尽图:

  8. Django中redis的使用方法(包括安装、配置、启动)

    一.安装redis: 1.下载: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 2.解压 tar -zxvf redis-3.2. ...

  9. coredns 编译模式添加插件

    备注:    coredns 默认已经安装了一些插件,比如大家用的多的kubernetes etcd ... 但是我们可以自己编译插件,构建我们自己的 coredns 版本,方便集成使用 1. 项目结 ...

  10. c++封装继承多态

    面向对象的三个基本特征 封装.继承.多态.其中,封装可以隐藏实现细节,使得代码模块化:继承可以扩展已存在的代码模块(类):它们的目的都是为了——代码重用.而多态则是为了实现另一个目的——接口重用 封装 ...