![]() |
|
إشارة مرجعية Pointer - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : إشارة مرجعية Pointer (/showthread.php?tid=22359) |
إشارة مرجعية Pointer - silverlight - 01-11-17 مقدمة : في واقع الأمر و بشكل مبدئي لقد احترت قليلا حين أردت أت أختار عنوانا لهذا الموضوع لكن في النهاية قررت استخدم كلمة Pointer للموضوع لذلك اسمحوا لي أولا أن أقوم بتوضح معني هذه الكلمة كلمة Pointer ترجمتها الحرفية في اللغة العربية تساوي كلمة مؤشر والمعني هنا كأنك تشير لشئ مجهول وتقول كلمة هذا وكلمة هذا في اللغة العربية عبارة عن لفظ إشارة لشئ مجهول لا نعرف نوعه او ماهيته وبرمجيا فإن Pointer في لغة #C تساوي كلمة Value Type في لغة الفيجوال بيسك دوت نت و جميع الأشكال التالية تعتبر Pointer 1- جميع الأنواع تعتبر Pointer وهي , sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool 2- أي Structure جديد تبنيه وتكتب الكود الخاص به يعتبر Pointer 3- أيضا Enum يعتبر Pointer الهدف : لعل واحدة من أكبر المشاكل التي تواجه المبرمج هي أنه بعد تعريف متغير معين و استخدامه فإن GC Class يقوم بالتخلص من كل شئ في ذاكرة الكمبيوتر وبالتالي حينما يريد المبرمج استرجاع قيمة هذا المتغير بعد فترة زمنية قد لا يجد قيمته في ذاكرة الكمبيوتر لذلك و بشكل مؤقت وهربا من هذه المشكلة قد يضطر المبرمج إلي تثبيت قيمة المتغير في أول البرنامج لذلك الهدف من موضوعي هذا هو توضيح كيفية الإحتفاظ بمؤشر يشير الي باراميتر معين أو قيمة معينة لأطول فترة زمنية ممكنة أثناء تشغيل البرنامج وبالتالي يمكن استخدام هذا المؤشر بين الكلاسات المختلفة أو بين الفورم المختلفة بسهولة و يسر ملحوظة هامة : الفكرة محل النقاش يمكن استخدامها أثناء تشغيل البرنامج فقط خطوات التنفيذ : حفظ البيانات 1- كتابة Structure بأي إسم تراه مناسبا و تضع به المتغيرات 2- تحويل هذا Structure الي مصفوفة بايت 3- حفظ مصفوفة البايت بشكل مؤقت تحت فهرس المشروع أو تحتفظ بها في اي مكان أخر تحدده أنت إسترجاع البيانات 1- تقرأ مصفوفة البايت من الملف 2- تقوم بتحويل مصفوفة البايت الي Structure 3- تقرأ المتغيرات من هذا Structure و تستخدمها حين تريد المثال الأول افتح مشروع أضف للفورم باتون و Label أضف الكلاس التالي للمشروع PHP كود : Public Structure StringPointerأضف الكلاس التالي للمشروع و هذا الكلاس سيكون ثابتا في جميع الأمثلة حيث الهدف منه تحويل Structure الي مصفوفة بايت و العكس PHP كود : Public Class PointerConverter(Of T As Structure)اكتب الكود بالشكل التالي PHP كود : Public Class Form1المثال الثاني وهنا سنجعل الأمر أكثر صعوبة قليلا افتح مشروع وأتوماتيكيا ستجد به الفورم رقم 1 أضف باتون و Label الي الفورم الأول أضف للمشروع فورم أخر و هو سيكون الفورم رقم 2 أضف للمشروع الكلاس PointerConverter(Of T As Structure) أضف الكلاس StringPointer الي المشروع و اكتب الكود في الفورم الثاتي كالأتي PHP كود : Public Class Form2و في الفورم الأول اكتب الكود بالشكل التالي عموما في المثال هذا سنستخدم الفورم الثاني لكي نبني الملف المراد حفظ الإشارة المرجعية به ثم نغلق الفورم الثاني مباشرة حتي نتأكد أن كل ما فيه تم عمل Dispsoe له ثم نعاود قراءة القيمة من الملف بالضغط علي الباتون في الفورم الأول PHP كود : Public Class Form1المثال الثاني موجود بالمرفقات وهو مكتوب بنسخة الفيجوال استوديو 2015 أتمني أن تكون الفكرة مفيدة للبعض منكم و لاحقا سأحاول أن أضيف للموضوع أمثلة أخري أصعب قليلا تقبلوا تحياتي |