DelphiのToolsapiによってモジュールの構造を取得するにはどうすればよいですか?

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

  •  28-09-2019
  •  | 
  •  

質問

Toolsapiによってモジュール(Pascalユニット)の構造情報を取得したいと思います。 IDEの構造ビューと同じように。

クラス、レコード、インターフェイス、変数/定数などのメンバー、パラメーターなど。

これらのメタデータを取得する簡単で効率的な方法はすでにありますか?

役に立ちましたか?

解決

たぶん使用してください パーサー それほど悪い考えではありませんか?

他のヒント

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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top