كيفية الحصول على بنية وحدة النمط بواسطة Toolsapi في Delphi؟

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

  •  28-09-2019
  •  | 
  •  

سؤال

أرغب في الحصول على معلومات بنية الوحدة النمطية (وحدة Pascal) بواسطة Toolsapi. تماما مثل عرض هيكل 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