jump to navigation

خواص الإشارات واللمس في Delphi 2010 اغسطس 30, 2009

Posted by delphawi in أخبار وتعليقات.
Tags: ,
add a comment

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

أهنئ كل إخواني الدلفاويين بصدور Delphi 2010 الجديد , والذي يحمل العديد من الخواص الجديدة والرائعة .

الفيديو التالي من شركة embarcadero يعرض بعض الخواص الجديدة الرائعة في Delphi 2010 الخاصة بالشاشات التي تعمل باللمس .

رابط تحميل الفيديو MP4

مشاهدة ممتعة :)

مقدمة إلى المصفوفات في دلفي يوليو 18, 2009

Posted by delphawi in قواعد اللغة.
Tags: , , , , ,
2 comments

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

المصفوفات Arrays , تعتبر من أهم بنى البيانات (Data structures) , و تعتبر أيضاً البنية الأساسية لبقية بنى البيانات (مثل Stack و Queue ..) .

والمصفوفة هي مجموعة من العناصر (البيانات أو المتغيرات) من نفس النوع (مصفوفة متغيرات integer , مصفوفة متغيرات char ..) .

أنواع المصفوفات في دلفي :

هناك نوعان أساسيان من المصفوفات في دلفي :

1- مصفوفات ساكنة Static arrays : وهي التي يكون عددها معروفاً ومحدداً عند تصميم البرنامج أو كتابته , وهذا النوع من المصفوفات لا يمكن تغيير عدد عناصره أثناء تنفيذ البرنامج .

مثلاً مصفوفة تحتوي على درجات 5 طلاب , فهي من النوع الساكن لأن عناصرها محددة مسبقاً ومعروفة .

ويمكن تعريف المصفوفة الساكنة على الشكل التالي :

var ArrayName : array [ElementsNumber] of DataType ;

فمثلاً المصفوفة التالية :

var Marks : array [0..4] of integer

هي مصفوفة اسمها Marks , وعدد عناصرها 5 (من 0 إلى 4) , وعناصرها من النوع الرقمي Integer .

وبعد تعريف المصفوفة , يمكن تعيين قيم عناصرها بالترتيب أو على نحو منفصل

فيمكن مثلاً تعيين درجات الطلاب بالكود التالي :

var i : integer ;
begin
for i := 0 to 4 do
Marks[i] := i ;

في السطر الأول بدأنا حلقة for..do والتي تبدأ من 0 إلى 4 وقيمتها تكون في المتغير i .

في السطر الثاني نعين قيمة الدورة (i) إلى العنصر ذو الترتيب i من المصفوفة Marks .

هنا سيحصل كل عنصر على قيمة = ترتيبه في المصفوفة , فالعنصر الأول (ترتيبه 0) يحصل على القيمة 0 , والعنصر الثاني (ترتيبه 1) يحصل على القيمة 1 وهكذا ..

ملاحظة : يفضل استعمال الدالتين Low و High لتعيين رقم بداية ونهاية حلقة for..do عند التعامل مع المصفوفات , فيصبح الكود :

for i := Low(Marks) to High(Marks) do

حيث تقوم الدالة Low بإرجاع أدنى ترتيب داخل لمصفوفة الممررة إليها , وترجع الدالة High أقصى ترتيب داخل لمصفوفة الممررة إليها .

ومن خلال الكود التالي , يمكن عرض عناصر المصفوفة (في تطبيق Console) :

for i := Low(Marks) to High(Marks) do
WriteLn(Marks[i]) ;
ReadLn ;

من خلال حلقة for..do السابقة , سيتم عرض عناصر المصفوفة بالترتيب في نافذة Console .

يمكن أيضا تعيين قيم عناصر المصفوفة بشكل منفصل على النحو التالي :

Marks[0] := 0 ;
Marks[1] := 1 ;
Marks[2] := 2 ;
...

لكن يلاحظ على هذه الطريقة أنها طويلة (في المصفوفات التي تزيد عناصرها عن 100 عنصر مثلاً) , وأنها متعبة وتستغرق وقتاً طويلاً .

ويصبح الكود النهائي لتطبيق المصفوفات الساكنة :

var
Marks : array[0..4] of integer ;
i : integer ;
begin
try
for i := Low(Marks) to High(Marks) do
Marks[i] := i ;
for i := Low(Marks) to High(Marks) do
WriteLn(Marks[i]) ;
ReadLn ;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.

———————————————-

2- المصفوفات الديناميكة Dynamic Arrays : وهي المصفوفات التي يكون عدد عناصرها مجهولاً عند تصميم أو كتابة البرنامج , ويمكن تعيين عدد عناصرها أثناء تنفيذ البرنامج .

فمثلاً مصفوفة مخصصة لتخزين درجات الطلاب , لكن عدد الطلاب مجهول عند كتابة البرنامج (بالنسبة للمبرمج) , ولكنه معروف للمستخدم عندها يجب استخدام مصفوفة ديناميكية لتمكين المستخدم من تعيين عناصرها أثناء استخدامه للبرنامج .

وتعريف المصفوفة الديناميكية مشابه لتعريف المصفوفة الساكنة , باستثناء تعيين عدد العناصر (لأنه مجهول أصلاً !!) , ويكون على الشكل التالي :

var Marks : array of integer ;

ويمكن تعيين عناصرها من خلال دالة SetLength على النحو التالي :

SetLength(Array, NewLength) ;

فمن خلال الأمر التالي (في تطبيق Console) يمكن تعيين عناصر المصفوفة الديناميكية Marks من خلال إدخال المستخدم :

var
L: Integer ;
begin
ReadLn(L) ;
SetLength(Marks, L) ;

ويمكن تعيين عناصر المصفوفة أيضاً من خلال حلقة (for..do مثلاً) أو بطريقة مفصلة

فيصبح الكود النهائي لتطبيق المصفوفات الديناميكية على الشكل التالي :

var
Marks : array of integer ;
i, L : integer ;
begin
try
WriteLn('Insert the new length :') ;
ReadLn(L) ;
SetLength(Marks, L) ;
for i := Low(Marks) to High(Marks) do
Marks[i] := i ;
for i := Low(Marks) to High(Marks) do
WriteLn(Marks[i]) ;
ReadLn ;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.

ملاحظة : يبدأ ترتيب المصفوفة الديناميكية من الصفر .

الأمثلة :

يمكنك تحميل المثالين المشروحين في هذا الدرس من خلال الرابط التالي :

http://www.4shared.com/file/118918028/dfed408d/Arrays_lesson.html

Delphi Distiller 1.73 يوليو 18, 2009

Posted by delphawi in برامج وأدوات.
Tags: ,
add a comment

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

Delphi Distiller 1.73 هي آخر نسخة صدرت من البرنامج حسب موقع LiteApplications

هناك عدة تغييرات في هذه السنخة , أهمها :

1- روابط تحميل دلفي 2010 , وتجدها في قسم Downloads داخل التبويب Delphi 2010 . فقط انسخ الرابط من البرنامج , ثم قم بتحميله من خلال المتصفح او من خلال برنامج مدير التحميل الخاص بك .
2- تغيير موقع خيارات إزالة الرخص , فيمكنك الآن إزالة عمليات التحقق من رخص دلفي من خلال ضغط Alt+Ctrl+L فيظهر تبويب في أعلى البرنامج بعنوان “Secret stuff” يمكنك من خلاله إزالة عمليات التحقق من الرخصة الخاصة بدلفي , بما في ذلك رخصة دلفي 2010 .


    تحميل البرنامج :

    Delphi Distiller 1.73 : من خلال موقع البرنامج مباشرة من الرابط التالي : http://www.liteapplications.com/files/DelphiDistiller.rar?attredirects=0

    —————————–

    Delphi Distiller 1.44 : وهي نسخة لا تدعم Delphi 2010 لكنها تدعم ما قبله من إصدارات , ولإزالة عملية التحقق من الرخصة لأي نسخة دلفي يمكنك من خلال قسم Tweaks في التبويب الخاص بالنسخة إظهار خيار الإزالة من خلال ضغط Alt+Ctrl+L , التحميل من الرابط التالي : http://www.4shared.com/file/118900077/caf1a806/DelphiDistiller1-44.html



      ما هي نسخة دلفي التي تبرمج بها مشاريعك ؟ أبريل 2, 2009

      Posted by delphawi in مقالات عامة.
      1 comment so far

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

      أرجو منكم المشاركة في الاستفتاء التالي لمعرفة أكثر نسخ دلفي استخداماً .

      ماذا تحب أن ترى في Delphi 2010 ؟؟ مارس 23, 2009

      Posted by delphawi in مقالات عامة.
      Tags: , ,
      1 comment so far

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

      السلام عليكم

      ماذا تريد أن ترى في دلفي 2010 ؟

      ماذا تتوقع أن تجد ؟ ماذا تتمنى أن تجد وأن تضيف ؟؟؟

      خوارزمية لحل حسبة برما مارس 13, 2009

      Posted by delphawi in خوارزميات.
      Tags: , ,
      4 comments

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

      مقدمة …

      من ويكيبيديا، الموسوعة الحرة

      حسبة برما مقولة مصرية دارجة تقال عندما يحتار الأمر في حساب شئ ما. ورد في موسوعة حلوة بلادي للكاتب إبراهيم خليل إبراهيم : المقولة الشهيرة حسبة برما ترجع لاحدى القري التابعة لمركز طنطا بمحافظة الغربية وهي قرية ( برما ) التي تبعد عن طنطا بحوالي 12 كيلو متر ، وقد جاءت هذه المقولة ( حسبة برما ) عندما اصطدم أحد الاشخاص بسيدة كانت تحمل قفصا محملا بالبيض فأرادو تعويضها عما فقدته من البيض وقالوا لها : كم بيضه كانت بالقفص ؟ فقالت : لو احصيتم البيض بالثلاثة لتبقي بيضة ، وبالاربعة تبقي بيضة ، وبالخمسة تبقي بيضة ، وبالستة تبقي بيضة ، ولو احصيتموه بالسبعة فلا تبقي شيئا

      وفي كثير من الأحيان كانت تذكر هذه المقولة أمامي “انت هتعمل زي حسبة برما !!” :P , فلا أعرف ما هي هذه الحسبة ولا ما المقصود بها .

      لكنني تذكرتها قبل فترة , وقمت اليوم بتصميم خوارزمية بسيطة جدا لحلها.

      الخوارزمية :

      Repeat
      X = X + 1
      Until (X mod 2=1) and (X mod 3=1) and (X mod 4=1) and (X mod 5=1) and (X mod 6=1) and (X mod 7=0)
      Print X
      End
      

      وعلى الرابط التالي هناك تطبيق بدلفي 2009 يقوم بحل هذه الخوارزمية :

      http://www.4shared.com/file/92644583/228a43a4/__online.html

      التعامل مع قائمة To-Do من خلال محرر الكود مارس 12, 2009

      Posted by delphawi in مقالات عامة.
      add a comment

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

      مقدمة ..

      قائمة To-Do من أهم الأدوات الموجودة في بيئة Delphi , فهي مفيدة في تسجيل المهمات التي تريد تنفيذها , أو التي تريد من الآخرين تنفيذها , حيث انه يمكن للآخرين (الذين يعملون معك على المشروع مثلاً) أن يتطلعوا على هذه القائمة ليعرفوا ما تم من المشروع وما تبقى إنجازه منه , وفيما يلي شرح بسيط لكيفية التعامل مع عناصر هذه القائمة من خلال محرر الكود في دلفي , وذلك بكتابة تعليقات تفسر من قبل Delphi على أنها عناصر لقائمة To-Do .

      التعامل مع القائمة مرئياً ..

      يمكنك إظهار قائمة To-Do في بيئة Delphi عن طريق الأمر “To-Do List” في قائمة “View” , وفي Delphi 2009 تظهر بالشكل التالي :

      main-view1

      كما يمكنك أن تضيف أمراً -مهمة- جديدة إلى القائمة من خلال الاختصار Ctrl+Shift+T , وعند استعماله تظهر النافذة التالية :

      add-to-do

      والهدف من الدرس , هو الاستغناء عن هذه النافذة , واستعمال محرر الكود بدلاً منها .

      لماذا أستعمل محرر الكود بدلاً من النافذة المرئية ؟

      1. استخدام محرر الكود يوضح لك هل تمت المهمة أم لا دون الحاجة إلى فتح قائمة To-Do .
      2. استخدام محرر الكود أسرع في الإضافة .
      3. استخدام محرر الكود يتيح لك تحكماً أسرع في إضافة أو إزالة أو تعديل المهمات .
      4. استخدام محرر الكود وكتابة تعليقات إضافة مهمات To-Do فيه يتيح لكل من يعمل على المشروع أن يرى المهمة المطلوبة في جزئية معينة من الكود ,, فمثلاً إذا كان لديك كود يتعامل مع قاعدة بيانات ولكنك توقفت عن العمل على هذا الكود لأي سبب ليحل محلك شخص آخر , فيمكنك وضع تعليق To-Do في مكان من الكود ليراه زميلك ويعرف أين توقفت , وما الذي لا يزال عليه إنجازه .
      5. استخدام محرر الكود يعطيك بعض الاحترافية :) في التعامل مع بيئة دلفي , كما ستعرف كيفية الوصول إلى المطلوب بأكثر من طريقة في بيئة Delphi .

      شرح استخدام محرر الكود لإضافة مهمات إلى قائمة To-Do …

      انظر إلى التعليق التالي :
      {TODO 2 -oDelphawi -cToDo : Add a text box}

      سأشرح الآن هذا التعليق الذي يمثل نموذجاً لإضافة مهمة في قائمة To-Do من خلال محرر الكود :

      1. TODO : كلمة تدل على ان ما يليها سيضاف إلى قائمة To-Do , كما يمكن استبدال هذه الكلمة بكلمة DONE للدلالة على أن المهمة قد تم تنفيذها .
      2. 2 : رقم يدل على أهمية وأولوية المهمة المضافة .
      3. -o : رمز يدل على أن ما يليه هو اسم صاحب (مالك owner) المهمة .
      4. Delphawi : صاحب (مالك) المهمة .
      5. -c : رمز يدل على أن ما يليه هو التصنيف (category) التي تنتمي إليه المهمة .
      6. Add a text box : المهمة المطلوب إضافتها .

      (ملحوظة : يجب الإلتزام بالمسافات كما هو موضح في النموذج أعلاه ليعمل الأمر بشكل صحيح)

      الآن جرب بنفسك إضافة تعليقات مشابهة للنموذج السابق , ثم قم بفتح قائمة To-Do لترى النتيجة ..

      كيف أستخدم نسخ دلفي .. يناير 1, 2009

      Posted by delphawi in مقالات عامة.
      3 comments

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

      السلام عليكم إخواني …

      سأشرح الآن بإيجاز كيف أستخدم نسح الدلفي التي لدي :

      Delphi 7 —> عمل برامج بسرعة وبساطة بدلفي 32 فقط , أو عمل بريمجات وأمثلة سريعة دون الدخول في أدوات IDE المتطورة في بقية الإصدارات .
      ———————————————————————————————————————————-
      Delphi Studio 2006 —> عمل برامج متوسطة الأهمية والحجم والتي تحتاج أسلوب أعلى في التطوير , كما أستخدمه لعمل تطبيقات Delphi.NET وأيضاً “للفلسفة” في C# و C++  (يعني أقعد أألف أكواد :P )
      ———————————————————————————————————————————-
      Delphi 2009 —> استخدمه لعمل البرامج الكبيرة والمهمة .

        أصبح لدلفي مكان في السعودية :) ديسمبر 24, 2008

        Posted by delphawi in كتب ومواقع.
        Tags: , , , , , , , , , , , , , , , ,
        15 comments

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

        السلام عليكم إخواني الكرام …

        قبل فترة , ذهبت إلى مكتبة جرير في الرياض , بالمملكة العربية السعودية , ووجدت كتاباً رائعاً عن الدلفي.نت , فيشرح الدلفي.نت بالتفصيل وقواعد البيانات والانترنت والبرمجة الكائنية , وغيرها

        الكتاب من شركة شعاع , وهو أكثر من 1200 صفحة بالعربي , كما يأتي معه CD فيه الأكواد المصدرية المذكورة في الكتابة , وكل هذا بـ115 ريال , وهو موجه للمبتدئ والمتوسط والمحترف والخبير

        كما أنه يبدأ بمقدمة عن الدلفي العادية , ثم يدخل في الدوت نت بتقنياته , والـADO , ASP.net , COM , .NET , Intraweb , XML , OOP … وغيرها

        يمكنكم شراء الكتاب مباشرة لمن في الرياض (وجدته في فرع جرير بشارع الأحساء , وفرع طريق الملك عبدالله)

        لمن ليس في السعودية , هذه صفحة الكتاب

        http://www.raypub.com/catalog/book_info.php?cPath=&products_id=791&PHPSESSID=d0a696f805beb99a35a012e56970e1d8

        بالتوفيق …

        كيف تنشئ خلفيات احترافية , بشكل أي صورة تريدها نوفمبر 28, 2008

        Posted by delphawi in صور ووسائط متعددة.
        Tags: , , , , , , , , , , , , , , , , , , , , , ,
        5 comments

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

        ——————

        والله من زمان لم أضع تدوينات عن الدلفي … وعمال اقول ناقصني شيء :P

        اليوم سأعرض في هذه التدوينة , طريقة سهلة وبسييييييطة جدا حتى تقوم بعمل واجهة احترافية “بشكل أي صورة تريدها”

        لكن .. ماذا اقصد بـ”بشكل أي صورة تريدها” ؟

        حسناً .. هل شاهدت أي برامج واجهتها على شكل دائرة , أو على شكل مشغل MP3 ..الخ

        (المهم ان واجهتها ليست الواجهة المستطيلة التقليدية)

        وفكرت كيف أقوم بعملها ؟

        أنا فكرت :P .. أيام الـVB , والرد كان هنا :

        http://www.arabteam2000-forum.com/index.php?showtopic=127953&hl=%C7%E1%D5%E6%D1%C9

        ولمن ليس لديهم Visual Basic 6 … فإن الكود كان حوالي 63 سطر (انا تركت بعض الأسطر كتعريف الإجراءات وإغلاقها)

        لكن في دلفي … الأمر مختلف تماماً , تابع معي لتقوم بعمل برنامج افضل من المثال السابق , وطبعا بدون حرف كود واحد

        ——————

        خطوات العمل :

        1- عليك ان تحضر صورة (أي صورة , المهم تكون ذات خلفية بيضاء , والشكل الذي سيكون عليه الفورم غير مربع ,,, دائري مثلاً) . ويمكن الاستعانة بالصورة التالية :

        baddrawing

        2- الآن نفتح الصورة بالرسام (لأنه بسيط) ونجعل الخلفية باللون الأزرق (ويجب أن تكون قيمه : R=0 / G=0 / B=255 .. أي الأزرق النقي) . ويجب ان يكون لون الخلفية واااااحد + مختلف تماماً عن بقية ألوان الصورة + يكون لون معروف قيمه وليس لون من اختراعك , وذلك حتى يتعرف الدلفي عليه .

        ستصبح الصورة بهذا الشكل :

        bluebaddrawing

        3- نشغل الدلفي الآن .. ونبدأ مشروعاً جديداً من النوع VCL Application .

        4- نجعل خاصية BorderStyle للنموذج = bsNone .. أي بدون إطار .

        5- من التبويب Additional نضيف الأداة Image إلى النموذج .

        6- نعدل الخاصية Top لأداة Image إلى 0 , وخاصية Left إلى 0 أيضاً , وخاصية AutoSize إلى True (الخاصية الأخيرة تجعل أداة Image تتمدد لتأخذ نفس حجم الصورة)

        7- من خاصية Picture لأداة Image نضغط على زر (…) الخاص بها , ونختار Load… ونحدد الصورة الجديدة ذات الخلفية الزرقاء (وهي صورة BlueBadDrawing)

        8- تلاحظ تمدد أداة Image , لذا سنعدل حجم النموذج إلى 344 للخاصية Height , و 484 للخاصية Width .

        9- شغل البرنامج .. ولاحظ اننا لم نقم بعمل التعديلات الرئيسية الآن , لذا ستظهر الخلفية الزرقاء .

        10- الأن .. التعديل الأول : قم بتغيير الخاصية TransparentColor للنموذج إلى True .

        11- ……… التعديل الثاني: قم بتغيير الخاصية TransparentColorValue إلى clBlue (وهي قيمة الأزرق النقي R=0 / G=0 / B=255)

        12- قم الآن بتشغيل البرنامج ..

        ألف مبروووووووووووووووووووووووووك , لقد حصلت على نموذج بشكل مميز , وبدون سطر شيفرة واحد .

        ملحوظة مهمة جدا جدا جدا :

        يجب أن تكون الخلفية نقية (ليست فيها التشوهات التي في صور JPG) , جرب رسم صورة أخرى بصيغة BMP فهذا يعطيك أفضل أداء في دلفي .

        كما ان الصورة عندما وضعتها كـJPG لم تعمل في دلفي .

        ——————

        أفكار لم أجربها :P

        - جرب تغيير لون الدائرة الصفراء الصغيرة إلى الأزرق … ولاحظ النتيجة عند تشغيل البرنامج بالصورة المعدلة .

        - جرب وضع زر على النموذج يغير صورة أداة Image إلى صور مختلفة أثناء التشغيل .

        - قم بتصميم صورك الخاصة لحيوانات , جماجم , طبيعة ..الخ , وجربها .