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 | + ---------- + 

अंत में, जब आप ऊपर से फ़ॉर्मेट फ़ंक्शन के परिणाम प्रदर्शित करते हैं, तो आप यह मान देखेंगे:

<पूर्व> 00002468 -> 0000246 सी -> 32342

Comments

Popular posts from this blog

email - PHP mail error ... failed to open stream : permission denied -

c# - ListView onScroll event -

c - Linux mmap() error -