Arrays हमें एक ही नाम से चर की एक श्रृंखला का उल्लेख करने और उस श्रृंखला में व्यक्तिगत तत्वों को बाहर करने के लिए एक संख्या (एक सूचकांक) का उपयोग करने की अनुमति देता है। Arrays में ऊपरी और निचले दोनों सीमाएँ हैं और सरणी के तत्व उन सीमाओं के भीतर सन्निहित हैं।
सरणी के तत्व ऐसे मान हैं जो सभी एक ही प्रकार के हैं (स्ट्रिंग, पूर्णांक, रिकॉर्ड, कस्टम ऑब्जेक्ट)।
डेल्फी में, दो प्रकार के एरे होते हैं: एक निश्चित आकार का सरणी जो हमेशा एक ही आकार रहता है - एक स्थिर सरणी - और एक गतिशील सरणी जिसका आकार रनटाइम में बदल सकता है।
स्थैतिक अर्रे
मान लें कि हम एक प्रोग्राम लिख रहे हैं जो उपयोगकर्ता को प्रत्येक दिन की शुरुआत में कुछ मान (जैसे कि नियुक्तियों की संख्या) दर्ज करने देता है। हम सूची में जानकारी संग्रहीत करना चुनेंगे। हम इस सूची को कॉल कर सकते हैं नियुक्ति, और प्रत्येक संख्या को अपॉइंटमेंट्स [1], अपॉइंटमेंट्स [2] और इसी तरह संग्रहीत किया जा सकता है।
सूची का उपयोग करने के लिए, हमें पहले इसे घोषित करना होगा। उदाहरण के लिए:
var नियुक्ति: सरणी [0..6] पूर्णांक की;
अपॉइंटमेंट्स नामक एक वैरिएबल घोषित करता है जो 7 पूर्णांक मानों का एक आयामी सरणी (वेक्टर) रखता है। इस घोषणा को देखते हुए, अपॉइंटमेंट्स [3] अपॉइंटमेंट्स में चौथे पूर्णांक मान को दर्शाता है। कोष्ठक में संख्या को सूचकांक कहा जाता है।
अगर हम क्रिएट करते हैं स्थिर सरणी लेकिन अपने सभी तत्वों के लिए मान निर्दिष्ट नहीं करते, अप्रयुक्त तत्वों में यादृच्छिक डेटा होता है; वे बिन बुलाए चर की तरह हैं। निम्नलिखित कोड का उपयोग अपॉइंटमेंट्स सरणी में सभी तत्वों को 0 पर सेट करने के लिए किया जा सकता है।
k: = 0 से 6 के लिए अपॉइंटमेंट [k]: = 0;
कभी-कभी हमें किसी सरणी में संबंधित जानकारी का ट्रैक रखने की आवश्यकता होती है। उदाहरण के लिए, अपने कंप्यूटर स्क्रीन पर प्रत्येक पिक्सेल का ट्रैक रखने के लिए, आपको इसके एक्स और वाई निर्देशांक का उपयोग करने की आवश्यकता है बहुआयामी मूल्यों को संग्रहीत करने के लिए सरणी।
डेल्फी के साथ, हम कई आयामों के सरणियों की घोषणा कर सकते हैं। उदाहरण के लिए, निम्नलिखित कथन 24-सरणी द्वारा दो आयामी 7 की घोषणा करता है:
var DayHour: सरणी [1..7, 1..24] रियल की;
एक बहुआयामी सरणी में तत्वों की संख्या की गणना करने के लिए, प्रत्येक सूचकांक में तत्वों की संख्या को गुणा करें। DayHour चर, ऊपर घोषित, अलग-अलग 168 (7 * 24) तत्वों को 7 पंक्तियों और 24 स्तंभों में सेट करता है। तीसरी पंक्ति और सातवें कॉलम में सेल से मान को पुनः प्राप्त करने के लिए हम उपयोग करेंगे: DayHour [3,7] या DayHour [3] [7]। निम्नलिखित कोड का उपयोग DayHour सरणी में सभी तत्वों को 0 पर सेट करने के लिए किया जा सकता है।
मैं के लिए: = 1 से 7 करो
j के लिए: = 1 से 24 करो
DayHour [i, j]: = 0;
डायनेमिक एरे
आपको पता नहीं होगा कि एक सरणी बनाने के लिए कितना बड़ा है। आप की क्षमता हो सकती है रनटाइम पर सरणी का आकार बदलना. एक गतिशील सरणी अपने प्रकार की घोषणा करती है, लेकिन इसके आकार की नहीं। डायनेमिक सरणी का वास्तविक आकार रनटाइम में उपयोग के द्वारा बदला जा सकता है SetLength प्रक्रिया।
var छात्र: स्ट्रिंग की सरणी;
तार के एक-आयामी गतिशील सरणी बनाता है। घोषणा छात्रों के लिए स्मृति आवंटित नहीं करती है। मेमोरी में एरे को बनाने के लिए, हम सेट लैंथ प्रोसेस को कहते हैं। उदाहरण के लिए, उपरोक्त घोषणा को देखते हुए,
सेटलॉग्रोन (छात्र, 14);
14 तार की एक सरणी आवंटित करता है, 0 से 13 तक अनुक्रमित। डायनेमिक सरणियाँ हमेशा पूर्णांक-अनुक्रमित होती हैं, हमेशा तत्वों में उनके आकार से 0 से कम से शुरू होती हैं।
दो-आयामी गतिशील सरणी बनाने के लिए, निम्न कोड का उपयोग करें:
var मैट्रिक्स: डबल के सरणी की सरणी;
शुरू
सेट लैंथ मैट्रिक्स (मैट्रिक्स, 10, 20)
समाप्त;
जो डबल फ़्लोटिंग-पॉइंट मानों के दो-आयामी, 10-बाय -20 सरणी के लिए स्थान आवंटित करता है।
डायनामिक एरे की मेमोरी स्पेस को हटाने के लिए ऐर वैरिएबल पर नील असाइन करें, जैसे:
मैट्रिक्स: = नील;
बहुत बार, आपके कार्यक्रम को संकलन समय पर पता नहीं है कि कितने तत्वों की आवश्यकता होगी; उस संख्या को रनटाइम तक ज्ञात नहीं किया जाएगा। डायनेमिक सरणियों के साथ, आप केवल एक ही समय में आवश्यक के रूप में अधिक संग्रहण आवंटित कर सकते हैं। दूसरे शब्दों में, गतिशील सरणियों के आकार को रनटाइम पर बदला जा सकता है, जो गतिशील सरणियों के प्रमुख लाभों में से एक है।
अगला उदाहरण पूर्णांक मानों की एक सरणी बनाता है और फिर सरणी को आकार देने के लिए कॉपी फ़ंक्शन को कॉल करता है।
वर
वेक्टर: एंगर की सरणी;
k: पूर्णांक;
शुरू
सेट लैंथ (वेक्टर, 10);
k: = निम्न (वेक्टर) से उच्च (वेक्टर) करते हैं
वेक्टर [k]: = i * 10;
...
// अब हमें और जगह की जरूरत है
सेट लैंथ (वेक्टर, 20);
// यहां, वेक्टर सरणी 20 तत्वों तक पकड़ सकती है // (यह पहले से ही उनमें से 10 है) अंत;
SetLength फ़ंक्शन एक बड़ा (या छोटा) सरणी बनाता है और मौजूदा मानों की प्रतिलिपि बनाता है नई सरणी. निम्न और उच्च फ़ंक्शंस सुनिश्चित करते हैं कि आप सही कोड और निचले इंडेक्स मानों के लिए अपने कोड में देखे बिना हर ऐरे एलिमेंट को एक्सेस करें।