Como llegar a la estructura de un módulo por ToolsAPI en Delphi?
Pregunta
Quiero obtener la información de la estructura de un módulo (unidad de Pascal) por ToolsAPI. al igual que la vista de la estructura de la IDE hace.
Las clases, discos, interfaces, Variables / Constantes, etc. Miembros, parámetros, etc.
¿Existe ya una manera fácil y eficiente para obtener estos metadatos?
Solución
Tal vez usando un analizador no es tan mala idea?
Otros consejos
Que yo sepa no hay manera de consulta especial de información estructurada para un archivo determinado.
Lo que podría hacer es tener acceso a la información en el panel Estructura. De esta manera requiere que el archivo sea el módulo activo (que puede lograrse por la OTA), la salida depende de los ajustes de panel de estructura (Herramientas | Opciones ... -> Opciones de entorno | Explorer) y si un nodo es un campo, una procedimiento o lo que haya que determinan el índice de imágenes, padre ...
Este código entra por la ventana Estructura.
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;