paix144
15-02-2010, 05:51 PM
بسم الله الرحمن الرحيم
اليوم إن شاء الله راح نشوف لمحة بسيطة عن التعامل مع المؤشرات
المؤشر هو VARIABLE الذي محتواه يحتون على عنوان في الذاكرة
لإعلان عن مؤشر نستعمل (^)
مثال
Pvariable:^integer ;
Pvariable هي عنوان في الذاكرة
في معظم الحالات عند الإعلان عن مؤشر نستعمل الحرف 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 :=@(i); = لإسترجاع عنوان variable i
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;
2- untyped pointer
للإعلان نستعمل pointer
مثال
Ppot:pointer;
نستعمل هذا النوع لإسناد محتوى أي typed 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;
هذا كل شئ و يمكنك أخي المتتبع التعمق في دراسة Pointer
اليوم إن شاء الله راح نشوف لمحة بسيطة عن التعامل مع المؤشرات
المؤشر هو VARIABLE الذي محتواه يحتون على عنوان في الذاكرة
لإعلان عن مؤشر نستعمل (^)
مثال
Pvariable:^integer ;
Pvariable هي عنوان في الذاكرة
في معظم الحالات عند الإعلان عن مؤشر نستعمل الحرف 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 :=@(i); = لإسترجاع عنوان variable i
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;
2- untyped pointer
للإعلان نستعمل pointer
مثال
Ppot:pointer;
نستعمل هذا النوع لإسناد محتوى أي typed 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;
هذا كل شئ و يمكنك أخي المتتبع التعمق في دراسة Pointer