क्या सी # #if (DEBUG) कंपाइलर निर्देश के डेल्फी समतुल्य है?डेल्फी #IF (डीईबीयूजी) समकक्ष?
उत्तर
उपयोग करें:
{$IFDEF DEBUG}
...
{$ENDIF}
अलावा क्या कहा lassevk, आप भी संकलक मूल्यांकन के कुछ अन्य तरीकों का उपयोग कर सकते हैं से (डेल्फी 6 के बाद से, मेरा मानना है):
{$IF NOT DECLARED(SOME_SYMBOL)}
// Mind you : The NOT above is optional
{$ELSE}
{$IFEND}
जाँच करने के लिए यदि कंपाइलर में यह सुविधा है, तो उपयोग करें:
{$IFDEF CONDITIONALEXPRESSIONS}
इसके लिए कई उपयोग हैं।
उदाहरण के लिए, आप आरटीएल के संस्करण की जांच कर सकते हैं; डेल्फी मदद से:
आप RTLVersion $ अगर में भाव क्रम पुस्तकालय संस्करण स्तर स्वतंत्र रूप से संकलक संस्करण स्तर की परीक्षण करने के लिए उपयोग कर सकते हैं।
उदाहरण:CompilerVersion असाइन किया गया है: {$ यदि RTLVersion> = 16.2} ... {$ IFEND}
इसके अलावा, संकलक संस्करण ही कोड से जाँच की जा सकती, फिर सिस्टम यूनिट संकलित होने पर संकलक द्वारा एक मान। यह संकलक संकलक सुविधाओं/ भाषा वाक्यविन्यास के स्तर को इंगित करता है, जो RTLVersion के स्वतंत्र रूप से अग्रिम कर सकता है। कंपाइलरवर्सन का परीक्षण $ IF अभिव्यक्तियों में किया जा सकता है और VERxxx सशर्त परिभाषा के परीक्षण के बजाय का उपयोग किया जाना चाहिए। के लिए हमेशा ज्ञात संशोधन स्तर से अधिक या उससे कम परीक्षण करें। एक विशिष्ट संशोधन स्तर के लिए परीक्षण के लिए यह एक बुरा विचार है।
{$IF NOT DECLARED(UTF8String)} type UTF8String = type AnsiString; {$IFEND}
आशा इस मदद करता है:
एक और बात मैं नियमित रूप से करते हैं, एक प्रतीक है, जब यह अभी तक परिभाषित नहीं कर रहा है (आगे की संगतता के लिए अच्छा), इस तरह परिभाषित है! यदि कोई अनुप्रयोग आईडीई डिबगर के तहत चल रहा है
procedure TfrmMain.Button1Click(Sender: TObject);
begin
{$IFDEF MY_CONDITIONAL}
ShowMessage('my conditional IS defined!');
{$ELSE}
ShowMessage('my conditional is NOT defined!');
{$ENDIF}
{$IFNDEF MY_CONDITIONAL}
ShowMessage('My conditional is explicitly NOT defined');
{$ENDIF}
end;
घोषित(), duh –
@ user205376: तेज आंखों के लिए धन्यवाद, मैंने टाइपो तय किया। – PatrickvL
ये नियंत्रण निर्देशों उपलब्ध हैं:
{$IFDEF}
{$ELSE}
{$ENDIF}
{$IFNDEF} //if *not* defined
और वे जैसा कि यहाँ दिखाया इस्तेमाल किया जा सकता। एक कंपाइलर निर्देश के समान नहीं है लेकिन अभी भी बहुत उपयोगी है। उदाहरण के लिए:
ReportMemoryLeaksOnShutdown := DebugHook <> 0; // show memory leaks when debugging
आप {$ IFOPT} भूल गए हैं, जिसका उपयोग सीधे कंपाइलर सेटिंग्स के लिए परीक्षण करने के लिए किया जा सकता है। {$ IFOPT डी +} // डिबग जानकारी पर {$ IFOPT सी +} // दावे सक्षम आदि – Deltics
DebugHook सेट है:
- 1. #if
- 2. एसक्यूएल के समकक्ष Django समकक्ष
- 3. एक्शनस्क्रिप्ट में समकक्ष बीआईआईडी समकक्ष?
- 4. टॉमकैट में डीईबीयूजी को लेवल लॉगिंग कैसे सेट करें?
- 5. त्रुटि: 'if'
- 6. struts2: IF
- 7. IF कथन
- 8. क्या @if()
- 9. 'if' कथन
- 10. डेल्फी
- 11. गिट - आरएम समकक्ष "एड।" के लिए समकक्ष?
- 12. क्या सुंदरसप/पायथन में समकक्ष समकक्ष है?
- 13. मैवेन आर्केटाइप के लिए समकक्ष समकक्ष?
- 14. WinRT इन समकक्ष समकक्ष संस्कृति तरीकों?
- 15. MySQL, खाली मूल्यों के लिए समकक्ष समकक्ष?
- 16. असी समकक्ष (é -> ई)
- 17. डेल्फी
- 18. वीएमवेयर समकक्ष
- 19. जावा समकक्ष()
- 20. console.memory समकक्ष?
- 21. .NET समकक्ष?
- 22. __LINE__ समकक्ष?
- 23. रूबी "समकक्ष"
- 24. कोई समकक्ष। =
- 25. जावा समकक्ष()?
- 26. डेल्फी
- 27. डेल्फी
- 28. डेल्फी में इंस्टेंस संदर्भ?
- 29. डेल्फी
- 30. PostgreSQL "IF" सिंटेक्स त्रुटि
और सुनिश्चित करें कि परियोजना विकल्प DEBUG को परिभाषित करते हैं। मुझे लगता है कि केवल नए डेल्फी (डी 2007 और ऊपर?) संस्करणों ने डिबग बिल्ड के लिए इसे डिफ़ॉल्ट रूप से सेट किया है। –
पुराने संस्करणों के लिए आप {$ IFOPT D +} का उपयोग कर सकते हैं। 'डी' "डीबग जानकारी के साथ संकलन" के लिए कंपाइलर विकल्प प्रतीक है।'डी +' इंगित करता है कि यदि विकल्प * चालू * है तो केवल निम्न को संकलित किया जाना चाहिए। – Deltics
अधिक पठनीय {$ IFDEF DEBUG} की पोर्टेबिलिटी के लिए आप निश्चित रूप से एक मानक परिभाषा में {$ IFOPT C +} {$ DEFINE DEBUG} {$ ENDIF} जैसे कुछ शामिल कर सकते हैं फ़ाइल (डेल्फी के संस्करणों से संबंधित अनुभागों में) आपके लिए डीईबीयूजी को स्वत: परिभाषित नहीं करते हैं। ध्यान दें कि यह "ऑटो-डिफ़ाइन" हमेशा विश्वसनीय नहीं है। DEBUGINFO मुझे लगता है कि ऑटो-डिफ़ाइंड है लेकिन DEBUG केवल तभी परिभाषित किया जाता है जब आप DEBUG बिल्ड के लिए डिफ़ॉल्ट सशर्त छोड़ देते हैं (वे डीईबीयूजी को "फैक्ट्री" सेटिंग के रूप में शामिल करें, लेकिन इसे हटाया जा सकता है या नहीं। यानी यह "अंतर्निहित" परिभाषा नहीं है जब डीबग जानकारी के साथ बिल्डिंग – Deltics