如:
ttest = record
  name: string;
  id: integer;
end;var
 t: ttest;怎样得到ttest含有的字段的名称?即name 和id枚举类型可以得到
如: ttest1 = (aaa, bbb, ccc)GetEnumName(typeinfo(ttest1), 1); // typinfo.pas

解决方案 »

  1.   

    我认为无法得到。
    record类型的字段名字只对源程序有效,其实就是助记符号。
    编译成执行程序后,名字就成了对内存地址的引用,或者说 某个地址+偏移量 就成了你的记录中的某部分。
    这和枚举是完全不同的概念,枚举就是为了方便程序员把无序的东西排列起来,当然要把无序的东西名称记住并使用起来了。
    record是可以事先确定内存大小的,是严格按照字段类型分配空间的,所以不需要名字就可以访问。
    毕竟字符串比较的速度无法和基本运算加减法相比。
      

  2.   

    顶一下在typinfo里面也只是看到getFIeld等函数。没有看到GetRecord :(
      

  3.   

    ttest = record
      name: string;
      id: integer;
    end;var
     t: ttest;
    //如果只是这个例子,直接看他是不是String,是的就是name,不是就是integer.
      

  4.   

    对于一个不知道类型的变量是没有办法知道他是什么类型的
    一字节的变量里保存了一个#13
    用byte类型显示13
    如果char类型,表示回车
      

  5.   

    个人感觉不能获得...
    毕竟record只是一些变量的集合,不像对象一样可以通过is来判断类型...