سؤال

في دلفي، يمكنك استخدام توجيهات المترجم لتعطيل تحذيرات محددة، مثل

{$WARN USE_BEFORE_DEF OFF}

ولكن عندما حاولت أن تفعل ذلك مع إشارة محددة، والتي underscore_style_name خرجت من ملف _ تعليمات، قال المترجم أنها لا تعرف ما هي {$} تلميح هو. حتى لا يكون هناك أي طريقة للقيام بذلك؟

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

المحلول

ولا تلميحات معينة، ولكن يمكنك تعطيل كل منهم.

{$HINTS OFF}
procedure MyProc;
var
  i : integer;
begin
  DoSomething;
end;
{$HINTS ON}

نصائح أخرى

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

لتشغيلها بطريقة آمنة حقا، واحدة تريد أن تفعل شيئا من هذا القبيل:

function TopazGetText(const _s: string): string;
begin
{$IFOPT <something>+}
{$DEFINE HINTS_WERE_ON}
{$HINTS OFF}
{$ELSE}
{$UNDEF HINTS_WERE_ON}
{$ENDIF}
  Result := dzDGetText(_s, TOPAZ_TRANSLATION_DOMAIN);
{$IFDEF HINTS_WERE_ON}
{$HINTS ON}
{$ENDIF}
end;

للأسف يبدو أن هناك أي توجيه مترجم لفحص ما إذا كانت تلميحات هي خارج أم لا، لذلك لا يمكنك أن تفعل هذا. (H + ليس للحصول على تلميحات ولكن لسلاسل طويلة). أيضا، وتلميحات OFF / ON لا يعمل في وظيفة / الإجراء.

وهكذا كنت في نهاية المطاف تحول تلميحات وتشغيله دون قيد أو شرط عن وظيفة كاملة:

{$HINTS OFF}
function TopazGetText(const _s: string): string;
begin
  Result := dzDGetText(_s, TOPAZ_TRANSLATION_DOMAIN);
end;
{$HINTS ON}

و(المترجم كان يقول لي أنه لا يمكن أن مضمنة dzDGetText وهو أمر أنا لا يهمني في هذه الحالة، وأنا لا أريد أن أرى التلميح لأن هذا من شأنه أن يمنعني (وزملاء العمل بلدي) لرعاية حول تلميحات الهامة).

وأفضل أستطيع أن أفكر في أن تحيط موضوع التلميح مع شرط تحديد واستخدام تعريف نفسه مشروطة حول رمز قد تكون أو لا تكون هناك حاجة، كما هو مبين أدناه:

إذا كان لديك هذا:

procedure MyProc;
var
  i : integer;
begin
  DoSomething;
  //SomethingWith_i_IsCommentedOut;
end;

وسوف تحصل على: تلميح: متغير "أنا" وأعلن ولكنها تستخدم أبدا

وذلك في محاولة هذه بدلا من ذلك:

procedure MyProc;
  {$IFDEF USE_THE_I_PROCEDURE}
var
  i : integer;
  {$ENDIF}
begin
  DoSomething;
  {$IFDEF USE_THE_I_PROCEDURE}
  SomethingWith_i_IsCommentedOut;
  {$ENDIF}
end;

والآن يمكنك تحويل تحديد أو إيقاف تشغيله، ويجب أن لا تحصل على التلميح.

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