首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Delphi中用ToolsAPI获取一个模块的结构?

如何在Delphi中用ToolsAPI获取一个模块的结构?
EN

Stack Overflow用户
提问于 2010-06-19 13:07:43
回答 2查看 461关注 0票数 3

我想通过ToolsAPI获得一个模块(pascal单元)的结构信息。就像IDE的结构视图一样。

类、记录、接口、变量/常量等成员、参数等。

是否已经有一种简单有效的方法来获取这些元数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-19 21:11:48

也许使用parser不是个坏主意?

票数 2
EN

Stack Overflow用户

发布于 2010-06-19 17:44:12

AFAIK无法查询给定文件的特殊结构化信息。

您可以做的是访问结构窗格中的信息。这种方式要求文件是活动的模块(可以通过OTA实现),输出取决于结构窗格设置(工具|选项...->环境选项|资源管理器),如果节点是一个字段、一个过程或任何需要通过图像索引、父级...

此代码遍历结构窗格。

代码语言:javascript
复制
procedure StructureViewToSL(ASL: TStringList);

  procedure TreeToSL(ANode: IOTAStructureNode; ASL: TStringList; const APrefix: string);
  var
    I: Integer;
  begin
    ASL.Add(APrefix + ANode.Caption);
    for I := 0 to ANode.ChildCount - 1 do
      TreeToSL(ANode.Child[I], ASL, APrefix + '  ');
  end;

var
  StructureView: IOTAStructureView;
  StructureContext: IOTAStructureContext;
  Node: IOTAStructureNode;
  I: Integer;
begin
  StructureView := BorlandIDEServices as IOTAStructureView;
  StructureContext := StructureView.GetStructureContext;
  for I := 0 to StructureContext.RootNodeCount - 1 do
  begin
    Node := StructureContext.GetRootStructureNode(I);
    TreeToSL(Node, ASL, '');
  end;
end;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3074431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档