2011-05-28 12 views
24

यह वही है जो मैं करना चाहता हूं। मेरे पास एक प्रोजेक्ट है जिसे डेल्फी के कुछ संस्करण या बाद में संकलित किया जाना चाहिए। मैं डेल्फी संस्करण का परीक्षण करने के लिए एक सशर्त संकलक निर्देश का उपयोग करना चाहता हूं, और उसके बाद एक कस्टम संदेश के साथ एक कस्टम कंपाइलर त्रुटि उत्पन्न करने का कारण बनता है। एक कस्टम कंपाइलर चेतावनी या संकेत उत्पन्न करने में सक्षम होने पर भी त्रुटि हो सकती है यदि कोई त्रुटि संभव नहीं है।क्या मैं एक कस्टम कंपाइलर त्रुटि उत्पन्न कर सकता हूं? यदि हां, तो कैसे?

निश्चित रूप से, मैं सशर्त कोड सेगमेंट में कुछ गैर-संकलित योग्यता डाल सकता हूं, और यह ठीक है। लेकिन मेरा सवाल है "क्या मैं सशर्त रूप से एक कस्टम कंपाइलर त्रुटि उत्पन्न कर सकता हूं?"


धन्यवाद जोहान और सर्ग।

यहां समाधान है, और इस मुद्दे के बारे में अधिक जानकारी। मेरे पास एक ऐसा एप्लिकेशन है जो मूल रूप से डेल्फी 2007 में बनाया गया था। इसमें वेब डायरेक्ट घटकों को वेब सेवा से जोड़ने के लिए शामिल किया गया है। ये एसएसएल का उपयोग करें। मैंने हाल ही में अपने एसएसएल पुस्तकालयों को बाद के संस्करण में अपग्रेड किया है, और ये डेल्फी 2007 इंडी घटकों के साथ इतना अच्छा नहीं खेलते हैं।

{$IF CompilerVersion <= 19.0} // Delphi 2007 = 19.0 
    {$MESSAGE Error 'This project must be compiled in Delphi 2009 or later'} 
{$IFEND} 
+3

धन्यवाद, हर कोई, जवाब के लिए! वास्तव में –

उत्तर

40

आप उपयोग कर सकते हैं:

{$Message HINT|WARN|ERROR|FATAL 'text string' } 
 
{$MESSAGE 'Boo!'}     emits a hint 
{$Message Hint 'Feed the cats'}  emits a hint 
{$messaGe Warn 'Looks like rain.'} emits a warning 
{$Message Error 'Not implemented'} emits an error, continues compiling 
{$Message Fatal 'Bang. Yer dead.'} emits an error, terminates compiler 

देखें अब मैं यह सुनिश्चित करें कि इस आवेदन अब डेल्फी 2007 के साथ संकलित किया जाएगा या उससे पहले निम्नलिखित संकलक निर्देशों को शामिल किया है: http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/compdirsmessagedirective_xml.html

यह डेल्फी 6 और बाद में काम करता है।

+1

। और निश्चित रूप से आप इन्हें '{$ IFDEF}' कथन के बीच रख सकते हैं जैसे कैरी आवश्यक संकलक संस्करण के बारे में चेतावनी देना चाहता है। –

+0

ऐसा नहीं है कि मैं उपरोक्त से खुश नहीं हूं, लेकिन इस उत्तर के बारे में इतना अच्छा क्या है? क्या सभी को कस्टम कंपाइलर संदेश बनाने का अचानक आग्रह है? – Johan

+1

मुझे लगता है कि ऐसा इसलिए है क्योंकि यह ऐसा कुछ नहीं है जो अक्सर आता है, लेकिन वास्तव में उपयोगी हो सकता है। इसके अलावा, मैंने इस सवाल को पोस्ट करने से पहले थोड़ा सा पोक किया और हाथ से कुछ भी नहीं देखा। नतीजतन, यह शायद एक छोटी सी ज्ञात तकनीक है। मुझे निश्चित रूप से इसके बारे में पता नहीं था, और मैंने डेल्फी के हर संस्करण के बारे में लिखा है और इस्तेमाल किया है। हास्य के लिए –

6

डेल्फी संस्करण जाँच हो रही है आसान हो गया है के बाद से CONDITIONALEXPRESSIONS निर्देश डेल्फी 6 में पेश किया गया:

program requires2010; 

{$APPTYPE CONSOLE} 

{$IFDEF CONDITIONALEXPRESSIONS} 
    {$IF CompilerVersion >= 21.0} // 21.0 is Delphi 2010 
    {$DEFINE DELPHI2010} 
    {$IFEND} 
{$ENDIF} 

begin 
{$IFNDEF DELPHI2010} 
    {$MESSAGE Fatal 'Wrong Delphi Version'} 
{$ENDIF} 
    Writeln('Continued'); 
    Readln; 
end. 
+0

किस संस्करण में यह संस्करण पेश किया गया था? – Johan

+0

@ जोहान: मुझे यकीन है कि इसे डेल्फी 2007 से पहले पेश किया गया था। वर्तमान में मेरे पास जांच करने के लिए कोई विरासत डेल्फी संस्करण नहीं है। – kludg

+0

आप IFDEF VER140 (डेल्फी 6) और समान रूप से defs, VER22 = डेल्फी XE के खिलाफ जांच सकते हैं। – Kromster

संबंधित मुद्दे

 संबंधित मुद्दे