delphi pointer address -
डेल्फी में:
कैसे मैं एक संकेतक अंक को पता (0x2384293) प्राप्त करूं ?
<पूर्व> var iValue: = पूर्णांक; IptrValue: = PInteger; कार्यान्वयन प्रक्रिया TForm1.Button1Click (प्रेषक: TObject); शुरू iptrValue: = @ iValue; IValue: = 32342; // वही मूल्य वापस करना चाहिए: संपादन 1। पाठ: = GetAddressOf (iptrValue); Edit2.Text: = GetAddressOf (iValue);
तो वास्तव में GetAddress क्या है:)
करने के लिए < कुछ का पता प्राप्त करें, @
ऑपरेटर या Addr
फ़ंक्शन का उपयोग करें आपने पहले से ही इसका सही इस्तेमाल किया है आपको iValue
का पता मिला और उसे iptrValue
में संग्रहीत किया गया।
एक पते प्रदर्शित करने के लिए, आप < कोड> प्रारूप फंक्शन एक पॉइंटर वैल्यू को स्ट्रिंग में परिवर्तित करने के लिए। % p
प्रारूप स्ट्रिंग का प्रयोग करें:
Edit1.Text: = प्रारूप ('% p - & gt;% p - & gt;% d', [@iptrValue, IptrValue, iptrValue ^]);
यह iptrValue
वेरिएबल का पता प्रदर्शित करेगा, फिर उस पते को में संग्रहीत किया जाता है और फिर मान
iptrValue
चर घोषणापत्र स्मृति में कुछ बाइट आरक्षित रखता है और उनके साथ एक नाम संबद्ध करता है। मान लें कि पहले बाइट का पता $ 00002468
है:
iptrValue + ---------- + $ 2468: | | + ---------- +
iValue
घोषणा मेमोरी का एक टुकड़ा सुरक्षित रखता है, और यह शायद पिछले घोषणा की स्मृति के निकट होगा। चूंकि iptrValue
चार बाइट चौड़ा है, iValue
का पता होगा $ 0000246C
:
iptrValue + ---- ------ + $ 246 सी: | | + ---------- +
मैंने जो बक्सा तैयार किया है, वह अभी खाली है क्योंकि हमने उन चर पर ध्यान नहीं दिया है, हमने केवल चर के पते पर चर्चा की है अब निष्पादन योग्य कोड के लिए: आप @ iValue
को लिखते हैं और परिणाम को iptrValue
में संचित करते हैं, तो आपको यह मिलता है:
iptrValue + ----- ----- + + ---------- + $ 2468: | $ 246c | ---> | | + ---------- + + ---------- + iptrValue + ---------- + $ 246c: | | + ---------- +
इसके बाद, आप 32342 को iValue
को असाइन करते हैं, इसलिए आपकी स्मृति इस तरह दिखती है:
iptrValue + ---------- + + ---------- + $ 2468: | $ 246c | ---> | 32342 | + ---------- + + ---------- + iptrValue + ---------- + $ 246c: | 32342 | + ---------- +
अंत में, जब आप ऊपर से फ़ॉर्मेट
फ़ंक्शन के परिणाम प्रदर्शित करते हैं, तो आप यह मान देखेंगे:
Comments
Post a Comment