2016-07-21 4 views
6

सी में आप की तरहडेल्फी गिरावट

switch(x) { 
    case 'a': 
    case 'b': 
    printf("something"); 
    break; 
    case 'c': 
    printf("else"); 
    break; 
} 

कुछ कर सकते हैं, जबकि डेल्फी में मैं दोनों

case x of 
    'a': 
    'b': writeln('something'); 
    'c': writeln('else'); 
end; 

और

case x of 
    ['a','b']: writeln('something'); 
    'c': writeln('else'); 
end; 

लेकिन उन दोनों की कोशिश की नहीं है काम।

हालांकि विभिन्न समाधानों के उदाहरण, उदाहरण के लिए एक प्रक्रिया लिखना और इसे 'ए' और 'बी' के लिए बुलाएं, लेकिन मैं सोच रहा था कि कोई बेहतर समाधान था या नहीं। मैं भी इस तरह की एक गोटो इस्तेमाल कर सकते हैं,:

case x of 
    'a': goto labelCaseB; 
    'b': begin 
      labelCaseB: 
      writeln('something'); 
     end; 
    'c': writeln('else'); 
end; 

और यह पूरी तरह से काम करता है, लेकिन "मानक" गिरावट के लिए के माध्यम से डेल्फी भाषा में मामले बयान में समाधान क्या है?

बेशक

, मेरे वास्तविक मामले में कहीं अधिक जटिल है: उदाहरण में, मैं प्रयोग किया जाता है | एक अगर-बाकी;)

+1

मुझे आश्चर्य है कि इस तरह के सवाल upvoted कर दिया गया है लिख सकते हैं - मदद स्पष्ट विवरण और उदाहरण दिए गए हैं http://docwiki.embarcadero.com/RADStudio/Berlin/en/Declarations_and_Statements_ (डेल्फी) #Case_Statements – MBo

+0

आमतौर पर मैं f1/ctrl-f1 सहायता की जांच करता हूं, फिर Google इसे, फिर मैं सीधे यहां आ जाता हूं, और यदि मुझे अभी भी कुछ भी नहीं मिल रहा है, तो मैं पूछता हूं। लेकिन मैं भूल गया कि सहायता पास्कल भाषा के लिए भी उपलब्ध है, न केवल वीसीएल से संबंधित प्रश्नों के लिए :) – ZioBit

उत्तर

9

डेल्फी मामले बयान में के माध्यम से गिर नहीं है। यह सी और डेल्फी के बीच प्रमुख अंतरों में से एक है। लेकिन अपने विशेष मामले (यमक के बारे में खेद) में आप

case x of 
    'a','b': begin 
      writeln('something'); 
     end; 
    'c': writeln('else'); 
end; 
+0

वाह, अब मैं सोच रहा हूं कि मैंने क्यों कोशिश की ['ए', 'बी'] और 'ए' नहीं, बी '... शायद क्योंकि मैं "प्रारूप" के साथ पागल हो रहा था। धन्यवाद, मैं जितनी जल्दी हो सके इसे स्वीकार करूंगा (अभी भी 9 मिनट;) – ZioBit

+1

@ZioBit वर्णों के सेट के परीक्षण के दौरान स्क्वायर ब्रैकेट सिंटैक्स मान्य है। उदाहरण के लिए: यदि x ['a', 'b'] में ... तो काम करेगा। आप श्रेणियों का भी उपयोग कर सकते हैं: यदि x ['a' .. 'z'] में x ... तो यह बहुत उपयोगी हो सकता है और कुछ परिस्थितियों में केस स्टेटमेंट आपके लिए बेहतर काम कर सकता है। विनम्र, –

+2

@ माइकल विंसेन्ट: एफवाईआई: आप केस, यानी सीएएसई में श्रेणियों का भी उपयोग कर सकते हैं। _'ए ',' के '..' क्यू ',' जेड ': _ – HeartWare

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