منتديات ماك للعرب  

العودة   منتديات ماك للعرب > ركن نظام الماكنتوش > مجلس ماك العام

إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
  #1 (permalink)  
قديم 01-06-2005, 07:13 AM
الصورة الرمزية أبو بكر
Moderator
 
تاريخ التسجيل: Dec 2004
الدولة: أبوظبي - الإمارات
المشاركات: 621
Thanks: 0
Thanked 2 Times in 2 Posts
أبو بكر is on a distinguished road
افتراضي

بسم الله الرحمن الرحيم

نعيد ذكر تعريف البايت والإشارات :
بلغة باسكال:
Type
Byte = 0..255;
SignedByte = -128..127;
Ptr = ^SignedByte;
Handle = ^Ptr;

لإرجاع كتلة غير قابلة لإعادة التمركز نستخدم متغير المؤشر المعروف بـ Ptr كما هو معرف في الوصف السابق. والمؤشر ببساطة هو عنوان البايت الاعتباطي في الذاكرة، والمؤشر الذي يشير إلى كتلة غير قابلة لإعادة التمركز يشير إلى أول بايت في هذه الكتلة.
وتقوم بإرجاع الكتلة القابلة لإعادة التمركز باستخدام Handle كما هو معرف بالوصف السابق، و التعريف Handle يحتوي على عنوان المؤشر الرئيسي Master Pointer لنفس الكتلة.

طريقة وصف المتغيرات:
نصف المتغير بلغة باسكال على النحو التالي:
Var
MyVariable : Integer;
وبلغة C على النحو هذا:
int MyVariable;

لاحظ في الباسكال ضرورة وجود الأمر Var.. قبل التوصيف،
النمط الإجباري والقسري:
تضطر أحيانا في البرمجة بتخريج المتغيرات إلى غير مجموعاتها، أو إلى غير بنية المعلومات التي تنتمي إليها: فمثلا إليك التعريف التالي:
Type MyRecord = record 1
Item : Integer; 2
Name: Str255; 3
End; 4
MyRecPtr = ^MyRecord; 5
MyRecHandle = ^MyRecPtr; 6
MyData: MyRecHandle; 7

في السطر الأول وإلى السطر الرابع، قمنا بإنشاء بنية معلوماتية اسمها MyRecord
وبالسطر الخامس قمنا بتعريف مؤشر لها، والسطر السادس مقبض للبنية.. والسطر السابع تعريف متغير، من نوع كتلة MyRecHandle،
ولديك متغير اخر هو : myHandle: Handle; تلاحظ ان المتغير هذا ينتمي إلى بنية المقابض، فكيف سأجعله يشير إلى المجموعة ( أو الكتلة أو البنية) MyRecordHandle؟ وكلاهما مختلفين في النوع؟ ومن المعلوم انك تستطيع أن تعامل المتغيرات مع بعضها البعض التي تنتمي فقط لنفس المجموعة..

سنجبر المتغير myHandle بالإشارة الى MyData على النحو التالي:

MyHandle := Handle(MyData);

في هذا السطر قمنا بإجبار المتغير MyData على أن يخرج بصورة Handle ، ثم يخزن داخل المتغير MyHandle، ولهذه الطريقة أثر كبير في البرمجة.. إليك هذه الأمثلة:

Var 1
MyInt: Integer; 2
MyLong: LongInt; 3
MyPtr: Ptr; 4
MyHnd: Handle; 5

Begin 6
MyInt := 30; 7
MyPtr := @MyInt; 8
MyHnd^ := MyPtr; 9
MyLong := LongInt(MyHnd); 10

End; 11

من الأسطر 1 وحتى 5 تم تعريف متغيرات مختلفة،
وفي السطر 6 هو بداية تنفيذ الأوامر.. وفي السطر السابع تم تعيين القيمة 30 للمتغير MyInt ، وفي السطر الثامن تم إجبار المؤشر MyPtr ليشير إلى المتغير MyInt، عن طريق وضع العلامة @ قبل المتغير.. هذا النوع من الإجبار خاص بالمؤشر Ptr فقط.
وفي السطر التاسع تم جعل المقبض يشير إلى المؤشر رغم اختلاف النوعين.
وفي السطر العاشر تم إجبار المتغير (المقبض) من النوع Handle ليخرج بصورة LongInt. ثم يخزن داخل المتغير MyLong، وسنتخدم بكثرة جداهذا النوع من الإجبارات.. وكل الطرق السابقة ضرورية وسنستخدمها حسب الحاجة.
المجموعة Integer هي مجموعة الأعداد الصحيحة العادية (16 بتا)
المجموعة LongInt هي مجموعة الأعداد الصحيحة الطويلة (32 بتا)
من المعلوم أن المتغير يشغل حيزا في الذاكرة لتتخزن القيم فيه.، فمجموعة الأعداد الصحيحة العادية هي 16 بتا.. والبايت كما رأيناه سابقا هو 8 بتات فقط، إذن حجم أي قيمة تنتمي إلى هذه المجموعة تكون 2 بايت.
ومجموعة الأعداد الصحيحة الطويلة هي 32 بتا.. يكون حجم أي قيمة تنتمي إلى هذه المجموعة تكون 4 بايت.
وكل المؤشرات يكون حجمها بايت واحد فقط.

ملخص ومرجع:
أولا ملخص باسكال:
Pascal Summary

Data Types:

TYPE
SignedByte = -128..127;
Byte = 0..255;
Ptr = ^SignedByte;
Handle = ^Ptr;
ProcPtr = Ptr;
Size = LongInt;

ثانيا ملخص C:
C Summary

Data Types

typedef char SignedByte;
typedef unsigned char Byte;
typedef char *Ptr;
typedef Ptr *Handle;
typedef long (*ProcPtr)();
typedef long Size;

ثالثا: المثال السابق بلغة C

Int main ()
{
int MyInt = 30;
long MyLong;
Ptr myPtr;
Handle myHandle;

MyPtr = (Ptr) MyInt;
*MyHandle = MyPtr;
MyLong = (long) MyHandle;
}

أرجو تحويل النص إلى برنامج مثل الوورد وتحويل اتجاه النص البرمجي ليكون من اليسار إلى اليمين.. حتى يقرأ بشكل صحيح.
__________________
أبو بكر
رد مع اقتباس
  #2 (permalink)  
قديم 01-06-2005, 02:35 PM
الصورة الرمزية desperado
الادارة
 
تاريخ التسجيل: Jul 2004
الدولة: انا من نجد يكفيني هواها ويبري لوعتي شربي لماها
المشاركات: 6,711
Thanks: 0
Thanked 2 Times in 2 Posts
desperado تم تعطيل التقييم
افتراضي

الف شكر على المجهود الرائع
__________________
أخوكم عبدالرحمن البلاع

للتواصل عبر الايميل او الاي شات :

abdulrahman.mac@mac.com


يادار لا هنتي ولا هان راعيــــك
************** ولاهان شعبً كرموا راية الدين
حنا وآل سعود دروعً لاراضيـك
************** وحنا الا صاح المنادي ملبيــــن
رد مع اقتباس
  #3 (permalink)  
قديم 01-07-2005, 08:37 AM
Member
 
تاريخ التسجيل: Dec 2003
المشاركات: 79
Thanks: 0
Thanked 0 Times in 0 Posts
مغترب is on a distinguished road
إرسال رسالة عبر مراسل AIM إلى مغترب
افتراضي

حياك يا أبو بكر

كيفك مع الــ AppleScript؟
رد مع اقتباس
  #4 (permalink)  
قديم 01-07-2005, 06:22 PM
الصورة الرمزية أبو بكر
Moderator
 
تاريخ التسجيل: Dec 2004
الدولة: أبوظبي - الإمارات
المشاركات: 621
Thanks: 0
Thanked 2 Times in 2 Posts
أبو بكر is on a distinguished road
افتراضي

الحمد لله .. لا بأس بي مع AppleScript

أعتقد أنك استخدمت برمجة HyperCard ؟ صحيح؟
__________________
أبو بكر
رد مع اقتباس
  #5 (permalink)  
قديم 01-07-2005, 11:40 PM
Member
 
تاريخ التسجيل: Dec 2003
المشاركات: 79
Thanks: 0
Thanked 0 Times in 0 Posts
مغترب is on a distinguished road
إرسال رسالة عبر مراسل AIM إلى مغترب
افتراضي

صحيح! لكن من زمـــــــــــــان
رد مع اقتباس
إضافة رد

  منتديات ماك للعرب > ركن نظام الماكنتوش > مجلس ماك العام

أدوات الموضوع
انواع عرض الموضوع

ضوابط المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا يمكنك اضافة مرفقات
لا يمكنك تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML متاحة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


الساعة الآن »03:39 PM.


Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
جميع الحقوق محفوظة لموقع ماك للعرب ٢٠٠٢-٢٠٠٨م
Ad Management by RedTyger