Как получить структуру модуля по Toolsapi в Delphi?

StackOverflow https://stackoverflow.com/questions/3074431

  •  28-09-2019
  •  | 
  •  

Вопрос

Я хочу получить структуру информацию модуля (блока Pascal) по Toolsapi. Как и вид структуры IDE делает.

Классы, записи, интерфейсы, переменные / константы, члены и т. Д., Параметры и т. Д.

Есть ли уже легкий и эффективный способ получить эти метаданные?

Это было полезно?

Решение

Может быть, используя A. анализатор не так плохая идея?

Другие советы

AFAIK Нет способа запросить специальную структурированную информацию для данного файла.

Что вы можете сделать, это получить доступ к информации на панели структуры. Таким образом требует, чтобы файл был активный модуль (может быть достигнут от OTA), вывод зависит от настроек панели структуры (инструменты | опции ... -> Опции окружающей среды | Explorer) и если узел является полем, A Процедура или что нужно определить по индексу изображения, родитель ...

Этот код проходит через панель структуры.

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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top