__delphirtti System::Typinfo::GetEnumName
来源:互联网 发布:大水牛软件博客 编辑:程序博客网 时间:2024/05/23 14:06
运行期获取
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
PTypeInfo info;
info = __delphirtti(TWindowState);
Caption = AnsiString(info->Name);
String kindName;
kindName = System::Typinfo::GetEnumName(__delphirtti(TTypeKind),
info->Kind);
Caption = kindName;
}
http://docwiki.embarcadero.com/CodeExamples/XE5/en/TypInfoGetEnumName_%28C%2B%2B%29
#include <vcl.h>#include <windows.h> #pragma hdrstop#pragma argsused#include <vector>#include <tchar.h>#include <stdio.h>#include <conio.h>#include <System.Generics.Collections.hpp> /* A template class */template<class T>class TGenericClass : public std::vector<T> {public:void PrintTypeInfo();}; template<class T>void TGenericClass<T>::PrintTypeInfo() {PTypeInfo Info = new TTypeInfo;PTypeData Data;String SubName, KindName;char tmpBuffer[256]; memset(tmpBuffer, 0, 256); /* Get type info for the "yet unknown type". */Info = __delphirtti(T); /* There is no RTTI attached for some types, such as Records. */if (Info != NULL) {strcpy(tmpBuffer, AnsiString(Info->Name).c_str());printf("Type name: %s\n", tmpBuffer); /* Find out the name of an enum item from its ordinal value. */KindName = System::Typinfo::GetEnumName(__delphirtti(TTypeKind),Info->Kind);strcpy(tmpBuffer, AnsiString(KindName).c_str());printf("Type Kind: %s\n", tmpBuffer);memset(tmpBuffer, 0, 256); Data = GetTypeData(Info); if (Info->Kind == tkInteger) { /* In the case of Integer, here is the actual subtype name */SubName = System::Typinfo::GetEnumName(__delphirtti(TOrdType),Data->OrdType);strcpy(tmpBuffer, AnsiString(SubName).c_str());printf("Integer kind: %s\n", tmpBuffer);}if (Info->Kind == tkFloat) { /* In the case of Float, here is the actual subtype name. */SubName = System::Typinfo::GetEnumName(__delphirtti(TFloatType),Data->FloatType);strcpy(tmpBuffer, AnsiString(SubName).c_str());printf("Float kind: %s\n", tmpBuffer);} if (Info->Kind == tkDynArray + 1) { /* Check out the element size. */printf("Element size: %d\n", Data->elSize);}printf("Size of type: %d\n\n", sizeof(T));}} int _tmain(int argc, _TCHAR* argv[]) {TGenericClass<int> *IntClass = new TGenericClass<int>;IntClass->PrintTypeInfo(); TGenericClass<double> *DoubleClass = new TGenericClass<double>;DoubleClass->PrintTypeInfo(); TGenericClass<String> *StringClass = new TGenericClass<String>;StringClass->PrintTypeInfo(); /* Read a character to see the results. */getch();return 0;}
0 0
- __delphirtti System::Typinfo::GetEnumName
- GetEnumName应用
- GetEnumName与GetEnumValue的用法
- delphi中GetEnumName和GetEnumValue
- delphi中GetEnumName和GetEnumValue
- Delphi中的GetEnumName和GetEnumValue的使用方法
- 【error】LNK2005: already defined in LIBCMTD.lib(typinfo.obj)
- system
- System
- system
- system
- system
- System
- System
- System
- system
- system ():
- system()
- 西门子PLC通信方式--LIBNODAVE -- Exchange data with Siemens PLCs
- CSS 学习笔记
- amiao布局样式----列表方框
- MySQL基本使用命令中的5大命令
- ueditor单独调用图片上传
- __delphirtti System::Typinfo::GetEnumName
- 【Qt入门实践】主线程与子线程通信(linux下)
- Bresenham改进算法结合wu反走样算法画颜色渐变直线
- 构建高性能web站点
- [Latex]几招压缩Latex paper的页数
- 交换机工作原理
- 复习IPV4地址
- Eclipse实用插件
- 20140509