有没有办法用Rtti识别PAnsiChar?

时间:2013-06-03 19:07:00

标签: delphi

我有一个返回PAnsiChar类型的方法。我注意到Rtti将它识别为指针。有没有办法将其识别为PAnsiChar?

我需要信息从python扩展中返回字符串,python需要知道它的字符串指针而不仅仅是一个void *。 python的Delphi代码是动态创建的,因此需要检查我的方法返回的类型,以便为python接口构造适当的代码。

1 个答案:

答案 0 :(得分:2)

TRttiType个实例中执行以下操作:

  1. 阅读Handle的{​​{1}}属性。
  2. 检查PTypeInfoKind
  3. 然后深入查看tkPointer TypeData
  4. 然后宣读PTypeData类型RefType
  5. 最后检查指针引用的类型是带PPTypeInfo的AnsiChar。
  6. 像这样把它们放在一起:

    RefType^.Kind=tkChar

    这是一个演示程序:

    function IsPAnsiChar(AType: TRttiType): Boolean;
    begin
      Result :=(AType.Handle.Kind=tkPointer) 
        and (AType.Handle.TypeData.RefType^.Kind=tkChar);
    end;
    

    <强>输出:

    True
    True
    True