खोज…


परिचय

इससे पता चलता है कि आपकी खुद की बनाने की रनटाइम त्रुटि की जांच को आसानी से कैसे शामिल किया जा सकता है ताकि इसे बंद करने पर कोई कोड ओवरहेड उत्पन्न न हो।

तुच्छ उदाहरण

{$DEFINE MyRuntimeCheck} // Comment out this directive when the check is no-longer required!
                         // You can also put MyRuntimeCheck in the project defines instead.

   function MyRuntimeCheck: Boolean;  {$IFNDEF MyRuntimeCheck} inline;  {$ENDIF}
   begin
      result := TRUE;
      {$IFDEF MyRuntimeCheck}
        // .. the code for your check goes here
      {$ENDIF}
   end;

अवधारणा मूल रूप से यह है:

परिभाषित प्रतीक का उपयोग कोड के उपयोग को चालू करने के लिए किया जाता है। यह कोड को स्पष्ट रूप से पंक्तिबद्ध होने से रोकता है, जिसका मतलब है कि चेकपॉइंट को ब्रेकपॉइंट में डालना आसान है।

हालाँकि, इस निर्माण की असली सुंदरता तब है जब आप अब और चेक नहीं चाहते हैं। $ DEFINE (इसमें '//' सामने रखें) टिप्पणी करके आप न केवल चेक कोड निकाल देंगे, बल्कि आप रूटीन के लिए इनलाइन पर भी स्विच कर देंगे और इस तरह उन सभी स्थानों से ओवरहेड्स हटा देंगे, जहाँ आपने चालान किया था दिनचर्या! कंपाइलर आपके चेक के सभी निशान को पूरी तरह से हटा देगा (यह मानते हुए कि इनलाइनिंग "ऑन" या "ऑटो" के लिए सेट है)।

उपरोक्त उदाहरण अनिवार्य रूप से "अभिकथन" की अवधारणा के समान है, और आपकी पहली पंक्ति परिणाम के लिए उपयुक्त के रूप में TRUE या FALSE को सेट कर सकती है।

लेकिन अब आप कोड के लिए निर्माण के इस तरीके का उपयोग करने के लिए भी स्वतंत्र हैं जो ट्रेस-लॉगिंग, मेट्रिक्स, जो भी हो। उदाहरण के लिए:

   procedure MyTrace(const what: string);  {$IFNDEF MyTrace} inline;  {$ENDIF}
   begin
      {$IFDEF MyTrace}
        // .. the code for your trace-logging goes here
      {$ENDIF}
   end;
...
MyTrace('I was here');   // This code overhead will vanish if 'MyTrace' is not defined.
MyTrace( SomeString );   // So will this.


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow