![]() |
|
كيف نعرف عنوان Object ما في في الذاكرة؟ - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : كيف نعرف عنوان Object ما في في الذاكرة؟ (/showthread.php?tid=3875) الصفحات:
1
2
|
كيف نعرف عنوان Object ما في في الذاكرة؟ - محمد عبد العزيز - 15-02-2012 يعني حتى الأن لم تفهم -> المؤشر يؤشر على شيئ ما لا توجد دالة تظهر ما يؤشر عليه المؤشر إلا حسب نوع الشيئ المؤشر اليه المثال السابق كانت TDate اظهرناها بتحويلها الى نص غير ذلك يجب معرفة النوع أو ماهي الObject والا لن تكون سوى Bytes لا معنى لها كيف نعرف عنوان Object ما في في الذاكرة؟ - hanipino - 15-02-2012 كان عليك ان تذكر من الاول ان TDate هو صنف من نوع TObject انت كتبته و ليس المعرف مسبقا فى الدالفى و الذى هو عبارة عن Double ... . إقتباس :لكن ماهي الدالة التي ترجع لي قيمة المؤشر وليس عنوانه ؟ 1 - كيف عرفت ان الدالة ارجعت عنوان المؤشر و ليس قيمته 2 - ماذا تقصد بقيمة المؤشر (ما نوع هذه البيانات .. حجمها مثلا ... ) ------------------------------------------------------------------- الدالة التى اعطاك ايها kachwahed تعطيك عنوان قيمة المتغير الذى هو متغير من نوع TDate .. Double و ليس TObject ... , اما اذا كان المتغير من نوع TObject فهنا الدالة ستعطيك العنوان الذى يوجد فيه عنوان TObject و ليس عنوان المكان الذى يبداء فيه TObject فى الذاكرة . لان حجم Tobject 4 بايت فقط ... ماذا تتوقع ان يخزن فى هذا المكان من غير عنوان ... لان حجمه اكبر من هذا بكثير فهو يحتوى على اجراءت و دوال و حقول خصائص الى غير ذالك ... . اى ان الدالة الى اعطاك ايها الاخ kachwahed صالحة مع المتغيرات التى لا تحمل قيمة اكبر من 4 بايت فقط . لمعرفت عنوان متغير من نوع Tobject ... يجب قرائة القيمة الموجودة فى عنوانه بحيث هذه الاخيرة هى مكان Tobject فى الذاكرة ... للتاكد من ذالك استعمل Watch List + Debug Inspector PHP كود : varالى حد الان نحن نستخرج العنوان فقط و ليس القيمة التى تتكلم عنها كيف نعرف عنوان Object ما في في الذاكرة؟ - abdelmalek - 15-02-2012 ههههههههه راني ميت بضحك إقتباس :حتى الأن لم تفهم -> المؤشر يؤشر على شيئ مااسمحلي اسمحلي اخي عبد العزيز(من إجابتك قاعد نتخيل فيك ونت تجاوب) قلقتك ياسر ربي يبارك فيك وينورك . اليست الامور هكذا في الذاكرة : حيت الصورة جائت بعد هاته العمليات : PHP كود : procedure TForm1.Button1Click(Sender: TObject);مثلا لو اضفت السطر التالي : PHP كود : Obj1:=Obj2; ام توجد هناك امور اخرى حول ثمتيل objects في الداكرة و التعامل معها ؟ كيف نعرف عنوان Object ما في في الذاكرة؟ - محمد عبد العزيز - 15-02-2012 الobjects عبارة عن كتلة (ان صح التعبير) من الbytes بالذاكرة اظهار العنوان كما اوضح هاني بالمشاركة السابقة كما يمكن تكتبه PHP كود : var كيف نعرف عنوان Object ما في في الذاكرة؟ - abdelmalek - 15-02-2012 الحمد الله وشكر الله بارك الله فيكم ربي يسعدكم ويفرحكم . هاته الدالة التي كنت ابحت عنها بفارغ الصبر : PHP كود : IntToHex(Integer(Pointer(Obj1)),8)بالتوفيق للجميع ,, كيف نعرف عنوان Object ما في في الذاكرة؟ - kachwahed - 15-02-2012 إقتباس :هههههه دسم إطلعة عليه قبل ان اطرح السؤال .يبدو أن الدرس خربش علينا المفاهيم ![]() إقتباس :لكن ماهي الدالة التي ترجع لي قيمة المؤشر وليس عنوانه ؟أعتقد أن المسألة اتضحت: قيمة المؤشر = عنوان الغرض الذي يؤشر عليه الآن: عنوان المؤشر (أو مؤشر المؤشر) هذا شيء آخر، له استخدامات متقدمة ربما يأتي الحديث عنها لاحقا... عند تريد التعامل مع نمط بيانات خاص بك، جهز له نمط مؤشر عليه، في مثالك TDate PHP كود : pDate: ^TDate;آمل ألا أكون قد خربشتها أكثر ![]() كيف نعرف عنوان Object ما في في الذاكرة؟ - abdelmalek - 15-02-2012 إقتباس :أعتقد أن المسألة اتضحت: قيمة المؤشر = عنوان الغرض الذي يؤشر عليهاين كنت يابطل عبارة شافية كافية نعم صحيح هذا ماكنت اقصده . إقتباس :آمل ألا أكون قد خربشتها أكثرلا يا اخي الخربشات تزيد من الفهم او الرجوع الى الاصل . بارك الله فيكم وجزاكم خيرا . في امان الله ,, |