هل هناك أي طريقة للحصول على اسم الوحدة الحالي من ملف تضمين؟

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

سؤال

أقوم بتنفيذ بعض الكود من مكتبة إطارية واحدة إلى أخرى، مما يتطلب مني التعليق على أقسام كبيرة من التعليمات البرمجية لمجرد الحصول عليها لتجميعها، ثم استعادتها بعناية. في غضون ذلك، أحصل على الكثير من التحذيرات بسبب كل الكود المعلق. لذلك قررت كتابة ملف سريع تشمل لقمعها:

{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code'}
{$WARN NO_RETVAL OFF}
{$WARN USE_BEFORE_DEF OFF}

أدرجت هذا في جميع الوحدات التي تعطيني الكثير من التحذيرات، ولكن الآن عندما أرادت، فإن التحويل البرمجي الذي يعيد الرسالة كما يلي:

تحذير DCC] غير مكتملة .inc (1): تحذيرات W1054 قمعت للوحدة غير المرفوعة مع رمز التعليق

أود أن أخبرني أن التحذير قادما من الوحدة التي تقوم بما في ذلك، وليس الملف الشخصي نفسه. هل هناك أي طريقة للقيام بذلك، أو للعمل اسم الوحدة في الرسالة، دون تحريك توجيه الرسائل $ في الواقع من ملف التضمين وفي كل وحدة واحدة حيث فعلت هذا؟

هل كانت مفيدة؟

المحلول

فيما يلي خدعة، والتي تستخدم حقيقة أن تلميح التحويل البرمجي ل "الأساليب الخاصة غير المستخدمة" يحتوي على اسم الوحدة، يتم الإعلان عن الفئة، حتى لو تم الإعلان عن الفئة ذات الطريقة الخاصة في ملف تضمينه.

هذا يتطلب أن يظهر التوجيه التضمين لملف المجموع الخاص بك في جزء من الوحدة، حيث يسمح التصريحات, ، إما بعد بندات الاستخدامات في قسم الواجهة أو بعد تبليط استخدام قسم التنفيذ.

interface

uses Foo, Bar, Socks;

{$include Unfinished.inc}

يجب أن تبدو ملف المجموع الخاص بك مثل هذا:

{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code, Unit name see next line'}
type
  TUnit_With_Suppressed_Warnings = class
  private
    procedure UnitWithSuppressedWarnings; virtual; abstract;
  end;

{$WARN NO_RETVAL OFF}
{$WARN USE_BEFORE_DEF OFF}

الآن، ستحصل على الرسائلتين التالية لكل وحدة تتضمن الملف الذي يتضمن الملف:

تحذير DCC] غير مكتملة .inc (1): تحذيرات W1054 قمعت لوحدة غير مرغوبة مع رمز التعليق، اسم الوحدة انظر السطر التالي
DCC HINT] ActualUnitname.pas (5): أعلن SuperwithsupsuppressedWarningsedWarnings ولكن لم تستخدم قط.

لاحظ أن اسم الوحدة الفعلية يظهر في السطر الثاني.

ملاحظة: لن ترى السطر الثاني، إذا تم إيقاف تلميحات التحويل البرمجي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top