Как получить структуру модуля по Toolsapi в Delphi?
Вопрос
Я хочу получить структуру информацию модуля (блока 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;