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?

¿Fue útil?

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top