我想通过ToolsAPI获得一个模块(pascal单元)的结构信息。就像IDE的结构视图一样。
类、记录、接口、变量/常量等成员、参数等。
是否已经有一种简单有效的方法来获取这些元数据?
发布于 2010-06-19 21:11:48
也许使用parser不是个坏主意?
发布于 2010-06-19 17:44:12
AFAIK无法查询给定文件的特殊结构化信息。
您可以做的是访问结构窗格中的信息。这种方式要求文件是活动的模块(可以通过OTA实现),输出取决于结构窗格设置(工具|选项...->环境选项|资源管理器),如果节点是一个字段、一个过程或任何需要通过图像索引、父级...
此代码遍历结构窗格。
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;https://stackoverflow.com/questions/3074431
复制相似问题