3

ToolsAPIでモジュール(パスカルユニット)の構造情報を取得したい。IDEの構造ビューと同じように。

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

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

4

2 に答える 2

4

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;
于 2010-06-19T09:44:11.980 に答える
2

たぶん、パーサーを使用することはそれほど悪い考えではありませんか?

于 2010-06-19T13:11:47.863 に答える