r_1=record  
    s1 : r_2;  //另一个类似的record  
    s2 : r_3;  //另一个类似的record
    s3 : integer;  
    s4 : string;  
    s5 : array [0..3] of char;
  end;请问怎么能取得r_1的内容?
就是给出r_1然后返回r_1中包含的元素的个数,每个元素的名字,如果某个元素还是rocord那么就像这样递归下去。
谢谢!!!

解决方案 »

  1.   

    tkRecord是不是record类型的意思啊?可是我怎么能取到呢?
      

  2.   

    record是什么意思啊?
    看不明白你的意思。
      

  3.   

    r_2,r_3也其他类型是结构体(record),我想表达的意思就是有嵌套的意思
      

  4.   

    r_1=record  
        s1 : r_2;  //另一个类似的record  
        s2 : r_3;  //另一个类似的record
        s3 : integer;  
        s4 : string;  
        s5 : array [0..3] of char;
      end;var
    rr: r_1;
    rr.s1.(這裡直接獲取r_2地成員)
    rr.s2.(這裡直接獲取r_3地成員)嵌套也一樣用
      

  5.   

    var
    rr: r_1;
    rr.s1.(這裡直接獲取r_2地成員)
    rr.s2.(這裡直接獲取r_3地成員)
    同意樓上說
      

  6.   

    TO beyondtkl(大龙驹<*百善孝为先*>)   谢谢你!
    我得意思是怎么能取得结构体(record)r_1的内容?
    就是说r_1内包含的各个元素的数据类型,同时如果元素是结构体那么可以递归进去
    不知道我得意思大家明不明白?
      

  7.   

    你是不可能获得这些信息的,因为,RECORD里面没有这些信息。
    只有clss 或object才有也就是说,只有有方法的类才能获得这些信息。
      

  8.   

    楼上说的有点绝对,简单类型及枚举类型等都可以通过GetTypeData来分析,但record类型似乎不行,TypeData没定义为tkRecord时的结构。
      

  9.   

    高人可以研究一下GetTypeData函数,没准可以找到办法的。GetTypeData用汇编实现的,俺不懂。
    :(
      

  10.   

    回复人: ssq237712(流亡帅哥) ( ) 信誉:105  2005-01-26 17:23:00  得分: 0  我看过GetTypeData那段代码了,却是没有定义tkRecord的定义
    难道不会让我自己分析Record占的那段内存吧?太复杂了
      

  11.   

    回复人: Sorder(剑客) ( ) 信誉:92 
    就是 在运行期取得Record的typeinfo回复人: XuDunYu(西门吹雪) ( ) 信誉:100 
    现在没有是因为没有实现tkRecord的typeinfo啊
    不是不可能吧
      

  12.   

    回复人: XuDunYu(西门吹雪) ( ) 信誉:100 
    现在没有是因为没有实现tkRecord的typeinfo啊
    不是不可能吧
    ----------------------------------------------
    如果record 有typeinfo那它就不是record了,除非你自己在record 中再加一个typeinfo record,但这又有多少通用性呢。
      

  13.   

    回复人: XuDunYu(西门吹雪) ( ) 信誉:100 
    类有typeinfo信息不光是因为类中定义的相应信息,而是因为typinfo.pas单元定义的相应的函数
      

  14.   

    record没有完整的typeinfo,只有当record里面有一些生存期自管理对象字段的时候,它才带有关于这些字段的简单的typeinfo,以便于delphi插入一些自动清理record的自管理对象的代码。这种typeinfo只是编译期的,编码者知道得比编译器还要多,所以取得这样的typeinfo毫无意义比方说:
    type
      r_1=record  
        s1 : r_2;  //另一个类似的record  
        s2 : r_3;  //另一个类似的record
        s3 : integer;  
        s4 : string;  
        s5 : array [0..3] of char;
      end;然后
    var
     r: r_1;
    begin
     //这里r是确知的类型,还需要什么typeinfo?,直接用直接判断就是了
      

  15.   

    回复人: alphax(无之心) ( ) 信誉:135 var
     r: r_1;
    begin
     //这里r是确知的类型,还需要什么typeinfo?,直接用直接判断就是了现在因为有好多不同的record,
    假如我给出一个record的名字,想知道某个record中里面每个变量的名字和其值有方法么?
      

  16.   

    回复人: ssq237712(流亡帅哥) (我想过设计为类,那样能方便多了,但是这样与后台程序就不好匹配了,要做一个特别繁琐的前后台结构,而且record中的那些数据结构都是最基本的数据结构啊,实在不行也没有别的办法,总之谢谢
    你啊:)