15-02-2010, 05:51 PM
بسم الله الرحمن الرحيم
اليوم إن شاء الله راح نشوف لمحة بسيطة عن التعامل مع المؤشرات
المؤشر هو VARIABLE الذي محتواه يحتون على عنوان في الذاكرة
لإعلان عن مؤشر نستعمل (^)
مثال
Pvariable هي عنوان في الذاكرة
في معظم الحالات عند الإعلان عن مؤشر نستعمل الحرف P هذا لكي نعاود مراجعة السورس نستطيع تمييزه
PMyVariable
PSum
Padd
و هنالك نوعان من المؤاشرات
1- typed pointer
2- untyped pointer
سوف نرى الفرق بينهما
قبل الخوض في أنواع المؤشر أود التلويح لشئ مهم و هما Function Addr و operator @
أخي القارئ لكي تفهم أهمية ما ذكرته ما عليك إلى المتباعة و سوف تفهم إن شاء الله
1- typed pointer
Pvariable :=@(i); = لإسترجاع عنوان variable i
Pvariable^ :=4; = نعطي رقم 4 ل variable i يعني عنوان variable i في الذاكرة
جيد الآن سوف نرى كيفية إنشاء مؤشر جديد
شوف هذا الكود تم نخوض في الموضوع
الجديد الآن هو New و Dispose و هما عبارة عن procedure
و نستعملها لإدارة مساحة الذاكرة
نستعمل New لتخصيص مساحة في الذاكرة
نستعمل Dipose لمسح المساحة التي خصصنها في الذاكرة
كما يمكننا أيضا إستعمال GetMem و FreeMem
و لهم نفس العمل
مثال
2- untyped pointer
للإعلان نستعمل pointer
مثال
نستعمل هذا النوع لإسناد محتوى أي typed pointer
مثال
في هذه الحالة سوف ترجع لنا قيمة عشوائية للمؤشر
و يمكننا أيضا إسناد قيمة معينة
هذا كل شئ و يمكنك أخي المتتبع التعمق في دراسة Pointer
اليوم إن شاء الله راح نشوف لمحة بسيطة عن التعامل مع المؤشرات
المؤشر هو VARIABLE الذي محتواه يحتون على عنوان في الذاكرة
لإعلان عن مؤشر نستعمل (^)
مثال
كود :
Pvariable:^integer ;في معظم الحالات عند الإعلان عن مؤشر نستعمل الحرف P هذا لكي نعاود مراجعة السورس نستطيع تمييزه
PMyVariable
PSum
Padd
و هنالك نوعان من المؤاشرات
1- typed pointer
2- untyped pointer
سوف نرى الفرق بينهما
قبل الخوض في أنواع المؤشر أود التلويح لشئ مهم و هما Function Addr و operator @
أخي القارئ لكي تفهم أهمية ما ذكرته ما عليك إلى المتباعة و سوف تفهم إن شاء الله
1- typed pointer
كود :
var
Pvariable :^integer;
i : integer;
begin
Pvariable :=@(i);
Pvariable^ :=4;
Edit1.Text :=IntToStr(i);
end;Pvariable^ :=4; = نعطي رقم 4 ل variable i يعني عنوان variable i في الذاكرة
جيد الآن سوف نرى كيفية إنشاء مؤشر جديد
كود :
type Pvar=^integer;
var Pvariable:Pvar;كود :
Type Pvar = ^integer;
var Pvariable : Pvar;
begin
New(Pvariable);
Pvariable^:=4;
Edit2.Text := IntToStr(Pvariable^);
Dispose(Pvariable);
end;الجديد الآن هو New و Dispose و هما عبارة عن procedure
و نستعملها لإدارة مساحة الذاكرة
نستعمل New لتخصيص مساحة في الذاكرة
نستعمل Dipose لمسح المساحة التي خصصنها في الذاكرة
كما يمكننا أيضا إستعمال GetMem و FreeMem
و لهم نفس العمل
مثال
كود :
Type Pvar = ^integer;
var Pvariable : Pvar;
begin
GetMem(Pvariable,sizeof(integer));
Pvariable^:=4;
Edit3.Text:=IntToStr(Pvariable^);
FreeMem(Pvariable,sizeof(integer));
end;للإعلان نستعمل pointer
مثال
كود :
Ppot:pointer;مثال
كود :
var
Pvariable :^integer;
Ppot:point
begin
Ppot:=Pvariable;و يمكننا أيضا إسناد قيمة معينة
كود :
var
Ppot:pointer;
i : integer;
begin
i :=4;
Ppot:=@(i);
integer(Ppot^):=i;
Edit4.Text:=IntToStr(Integer(Ppot^));
end;
لم اتعامل مع المؤشرات من قبل,