आप एक सामान्य और मौलिक गलत-समझ से पीड़ित हैं सरणी पैरामीटर की nding। आप यहाँ है क्या:
function execute(var command: array of string): Boolean;
तथ्य एक dynamic array में नहीं है। यह open array parameter है।
अब, आप एक गतिशील सरणी को एक फ़ंक्शन के पैरामीटर के रूप में पास कर सकते हैं जो एक खुली सरणी प्राप्त करता है। लेकिन आप गतिशील सरणी की लंबाई को संशोधित नहीं कर सकते हैं। आप केवल इसके तत्वों को संशोधित कर सकते हैं।
यदि आपको गतिशील सरणी की लंबाई को संशोधित करने की आवश्यकता है, तो प्रक्रिया को गतिशील सरणी प्राप्त करनी होगी। आधुनिक डेल्फी में लिखने के लिए मुहावरेदार तरीका है:
function execute(var command: TArray<string>): Boolean;
आपको लगता है कि सामान्य सरणियों का समर्थन नहीं करता तो आप पैरामीटर के लिए एक प्रकार की घोषणा करने की जरूरत है डेल्फी के एक पुराने संस्करण का उपयोग कर रहे हैं:
type
TStringArray = array of string;
....
function execute(var command: TStringArray): Boolean;
आप कैसे चुन सकते हैं कि खुले सरणी या गतिशील सरणी पैरामीटर का उपयोग करना है या नहीं? मेरी राय में आपको हमेशा ऐसा करने के लिए खुले सरणी का उपयोग करना चाहिए। और यदि संभव नहीं है, तो अंतिम उपाय के रूप में गतिशील सरणी का उपयोग करें। एक खुले सरणी पैरामीटर के साथ एक फ़ंक्शन होने का कारण एक गतिशील सरणी पैरामीटर के साथ एक से अधिक सामान्य है। उदाहरण के लिए, आप निरंतर आकार वाले सरणी को खुले सरणी पैरामीटर के रूप में पास कर सकते हैं, लेकिन यदि फ़ंक्शन को गतिशील सरणी प्राप्त नहीं होती है।
स्रोत
2012-10-18 16:15:15
चूंकि यह साइट अंग्रेजी में है, इसलिए अधिकांश लोगों के लिए आपके प्रश्न का उत्तर देना आसान होगा यदि आप अपने त्रुटि संदेश का अंग्रेजी अनुवाद पोस्ट करने में सक्षम थे - मुझे लगता है कि यह "असंगत टोकन" होगा? – RobV
@RobV: "असंगत प्रकार", शायद जर्मन या डच में। –
हां, क्षमा करें। लेकिन इस मामले में, अंग्रेजी अनुवाद इतना अलग नहीं है। असंगत प्रकार। –