2013-01-24 19 views

उत्तर

7

यह सी ++ में एक संदर्भ पैरामीटर है। डेल्फी में varparameter से मेल खाता है।

procedure ABC(var a: Integer; var b: Integer); 

प्रलेखन कहते हैं:

अधिकांश मानकों या तो मान पैरामीटर (डिफ़ॉल्ट) या चर (वर) मानकों हैं। मान पैरामीटर मान द्वारा पारित होते हैं, जबकि परिवर्तनीय पैरामीटर संदर्भ द्वारा पारित होते हैं।

4
void ABC(int &a, int &b) 

बन जाएगा

procedure ABC(var a: Integer; var b: Integer); 

var कीवर्ड इंगित करता है कि आप इसके बजाय मूल्य की तुलना में, संदर्भ द्वारा मूल्य पारित करने के लिए चाहते हैं।

+1

'प्रक्रिया एबीसी (var ए, बी: इंटीजर); 'आसान लग रहा है। – willys

+2

हां वास्तव में, लेकिन विस्तारित रूप दिखाने के लिए यह स्पष्ट है। –

1

procedure ABC(out a: Integer; out b: Integer); भी है, जबकि यह बिल्कुल भिन्न-पैरामीटर नहीं है, वे भी रेफरी जा रहे हैं और मूल्य को पारित करने के इरादे से हैं। आपके द्वारा पोर्ट किए गए कोड के अर्थशास्त्र के आधार पर, आप केस-दर-मामले आधार पर var या out चुन सकते हैं।

+0

'इंटेगर' जैसे मूल्य प्रकार के लिए डेल्फी 'आउट' पैरामीटर बिल्कुल 'var' जैसा ही लागू किया गया है। यह बदनामी है। लेकिन सी ++ कोड 'आउट' जैसा नहीं है। तो मुझे यकीन नहीं है कि आप इसका जिक्र क्यों करते हैं। वहां 'कॉन्स' इत्यादि भी हैं। –

+0

@ डेविड हेफरन 'इंक (पॉइंटर)' और 'इंक (इंटीजर)' को भी लागू किया गया है, जिसका मतलब यह नहीं है कि यह वही अर्थ है। हम विषय के कोड के अर्थात् इरादे को नहीं जानते हैं और हम नहीं जानते कि अतिरिक्त कंपाइलर नियंत्रण उसकी मदद करेगा या नहीं। बाहर अक्सर अनदेखी सुविधा होती है और इसे सीखने में कोई दिक्कत नहीं होती है। –

+0

मैं तर्क दूंगा कि डेल्फी में 'आउट' के कार्यान्वयन से यह अक्सर एक गलत विशेषता बन जाती है। सी # और श्वास के साथ तुलना करें। –

1

के रूप में अन्य लोगों ने बताया है, बराबर डेल्फी घोषणा procedure ABC(var a, b: Integer); है, जब तक आपका इरादा है एक बाहरी C/C++ घोषित करने के लिए - कार्यान्वित समारोह है कि डेल्फी कोड में कॉल कर सकते हैं, जिस स्थिति में आप सी ले जाना है/खाते में सी ++ फ़ंक्शन का कॉलिंग सम्मेलन। एक डेल्फी फ़ंक्शन घोषणा जो ऊपर की तरह कॉलिंग सम्मेलन निर्दिष्ट नहीं करती है, डेल्फी के register कॉलिंग कन्वेंशन का उपयोग करती है (जिसे C++ बिल्डर में __fastcall के रूप में जाना जाता है)। C/C++ घोषणा आपको बताएंगे कि एक कॉलिंग सम्मेलन निर्दिष्ट नहीं करता है, तो C/C++ संकलक के डिफ़ॉल्ट बुला सम्मेलन प्रयोग किया जाता है, जो सबसे अधिक सेटअप की __cdecl है, ऐसी स्थिति में बराबर डेल्फी घोषणा तो हो जाता है: procedure ABC(var a, b: Integer); cdecl;

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