يعني حتى الأن لم تفهم -> المؤشر يؤشر على شيئ ما
لا توجد دالة تظهر ما يؤشر عليه المؤشر إلا حسب نوع الشيئ المؤشر اليه
المثال السابق كانت TDate اظهرناها بتحويلها الى نص
غير ذلك يجب معرفة النوع أو ماهي الObject والا لن تكون سوى Bytes لا معنى لها
كان عليك ان تذكر من الاول ان TDate هو صنف من نوع TObject انت كتبته و ليس المعرف مسبقا فى الدالفى و الذى هو عبارة عن Double ... .
إقتباس :لكن ماهي الدالة التي ترجع لي قيمة المؤشر وليس عنوانه ؟
1 - كيف عرفت ان الدالة ارجعت عنوان المؤشر و ليس قيمته
2 - ماذا تقصد بقيمة المؤشر (ما نوع هذه البيانات .. حجمها مثلا ... )
-------------------------------------------------------------------
الدالة التى اعطاك ايها kachwahed تعطيك عنوان قيمة المتغير الذى هو متغير من نوع TDate .. Double
و ليس TObject ... , اما اذا كان المتغير من نوع TObject فهنا الدالة ستعطيك العنوان الذى يوجد فيه عنوان TObject و ليس عنوان المكان الذى يبداء فيه TObject فى الذاكرة .
لان حجم Tobject
4 بايت فقط ... ماذا تتوقع ان يخزن فى هذا المكان من غير عنوان ... لان حجمه اكبر من هذا بكثير فهو يحتوى على اجراءت و دوال و حقول خصائص الى غير ذالك ... .
اى ان الدالة الى اعطاك ايها الاخ kachwahed صالحة مع المتغيرات التى لا تحمل قيمة اكبر من 4 بايت فقط .
لمعرفت عنوان متغير من نوع Tobject ... يجب قرائة القيمة الموجودة فى عنوانه بحيث هذه الاخيرة هى مكان Tobject فى الذاكرة
... للتاكد من ذالك استعمل Watch List + Debug Inspector
PHP كود :
var
Obj1 : TObject;
begin
Obj1 := TObject.Create;
ShowMessage('Obj1 Address = $' + IntToHex(PDWORD(@Obj1)^, 8));
end;
الى حد الان نحن نستخرج العنوان فقط و ليس القيمة التى تتكلم عنها
ههههههههه راني ميت بضحك
إقتباس :حتى الأن لم تفهم -> المؤشر يؤشر على شيئ ما
لا توجد دالة تظهر ما يؤشر عليه المؤشر إلا حسب نوع الشيئ المؤشر اليه
اسمحلي اسمحلي اخي عبد العزيز(من إجابتك قاعد نتخيل فيك ونت تجاوب) قلقتك ياسر ربي يبارك فيك وينورك .
اليست الامور هكذا في الذاكرة :
![[صورة: attachment.php?attachmentid=3253&stc=1&d=1329312031]](http://www.delphi4arab.net/forum/attachment.php?attachmentid=3253&stc=1&d=1329312031)
حيت الصورة جائت بعد هاته العمليات :
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
Var
B : Byte;
I : Integer;
Obj1: TMyObject;
Obj2: TMyObject;
begin
B:=20;
I:=100;
Try
Obj2 := TMyObject.Create;
//....................
Finally
FreeAndNil(Obj2);
End;
End;
ماهي الدالة التي تاتيني بـ F0FF ؟؟؟
مثلا لو اضفت السطر التالي :
Obj1 يصبح يشير الى مايشير اليه Obj2 اي F0FF وليس Nil ؟ اليس كذالك ؟
ام توجد هناك امور اخرى حول ثمتيل objects في الداكرة و التعامل معها ؟