الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تم إطلاق Harbour 3.0 و Viktor يترك ادارة المشروع الى Przemyslaw

بدأه PWCT Maker في 24 يوليو 2011 · 16 رد · 1,153 مشاهدة · في الأخبار والنقاشات التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

السلام عليكم ورحمة الله وبركاته

تم إطلاق Harbour 3.0 منذ ايام قليلة .... بعد عام ونصف من التطوير الجاد

والذى شمل 3600 commits

ال Harbour هو عبارة عن منتج حر مفتوح المصدر Free-Open Source

يهدف الى بناء مترجم Compiler متعدد المنصات Multiplatform خاص بلغة البرمجة Clipper

يدعم ال Harbour كل من MS-DOS, Windows (32 & 64), Windows CE, Pocket PC, OS/2, GNU/Linux and Mac OS X

رخصة المشروع تسمح باستخدامه فى تطوير مشاريع مفتوحة المصدر Open Source او مشاريع تجارية commercial applications

لتطوير قواعد البيانات يدعم ملفات DBF (نظام قديم) ويدعم ايضا Native SQL, ADO & ODBC

يدعم التقنيات الحديث مثل XML, FTP, TCP/IP, etc.

يتيح انشاء مختلف انواع التطبيقات Create Console, GUI, Service & Web Applications

يشتمل على العديد من المكتبات Contains many third party libs with additional features

تم تطويره من قبل فريق متميز Developed by a very experienced and capable team of developers

برنامج مرحبا بالعالم

 ? "Hello, world!"

ال Harbour يدعم ال OOP ايضا

#include "hbclass.ch"

 PROCEDURE Main()

    LOCAL oPerson := Person( "Dave" )

    oPerson:Eyes := "Invalid"

    oPerson:Eyes := "Blue"

    Alert( oPerson:Describe() )
 RETURN

 CLASS Person
    DATA Name INIT ""

    METHOD New() CONSTRUCTOR

    ACCESS Eyes INLINE ::pvtEyes
    ASSIGN Eyes( x ) INLINE IIF( ValType( x ) == 'C' .AND. x IN "Blue,Brown,Green", ::pvtEyes := x, Alert( "Invalid value" ) )

    // Sample of IN-LINE Method definition
    INLINE METHOD Describe()
       LOCAL cDescription

       IF Empty( ::Name )
          cDescription := "I have no name yet."
       ELSE
          cDescription := "My name is: " + ::Name + ";"
       ENDIF

       IF ! Empty( ::Eyes )
          cDescription += "my eyes' color is: " + ::Eyes
       ENDIF
    ENDMETHOD

    PRIVATE:
       DATA pvtEyes
 ENDCLASS

 // Sample of normal Method definition.
 METHOD New( cName ) CLASS Person

   ::Name := cName

 RETURN Self

يشتمل على مكتبة متكاملة للربط مع ال Qt تسمى HbQt

وتم عمل IDE ل Harbour باستخدام Harbour + HbQt

post-167987-063595000 1311466516_thumb.p

لمطورين الويندوز يمكن استخدام تقنية البرمجة بدون كود PWCT

فى التطوير والحصول على الكود بلغة Harbour وذلك من خلال HarbourPWCT

http://pwct.org

الجدير بالذكر ان المشروع صمم فى البداية بواسطة Antonio Linares

وتم تطويره من خلال عدد كبير من المطورين وفى الخمس سنوات الاخيرة كان يقودهم Viktor Szakáts

والذى بعد اطلاق Harbour 3.0 مباشرة ترك ادارة المشروع الى خليفته Przemyslaw Czerpak

وذلك حتى يتفرغ Viktor لامور اخرى فى حياته (ذكر احد اعضاء الفريق انها الدراسات العليا والله اعلم)

ايضا من المطورين البارزين الذين انضموا لمشروع Harbour منذ عام 2009 المطور Pritpal Bedi (من الهند)

وهو الذى قام بعمل HbQt وكذلك HbIDE مما اضاف ل Harbour قوة كبيرة بالربط مع Qt و توفر IDE خاصة به.

والله الموفق

المصدر

http://www.harbour-project.org/

http://en.wikipedia.org/wiki/Harbour_%28software%29

المرفقات
HBIDE_Editor.png
2
#2

ايه يا محمود مواضيعك بقت ليه بتتحط وش الفجر

عموما خبر جميل انا حاولت اتعلم اللغة دي بس لم استطع بامانة

قد يكون بسبب الSyntax المختلف عادة حيث ان الاوامر عموما أجد معها صعوبة كبيرة فى التأقلم

تحياتى لك

والله ولي التوفيق

GoodBye

#3
اقتباس

ايه يا محمود مواضيعك بقت ليه بتتحط وش الفجر

احب السهر هذه الايام .... رمضان على الابواب .... كل عام وانت بخير :)

اقتباس

عموما خبر جميل انا حاولت اتعلم اللغة دي بس لم استطع بامانة

قد يكون بسبب الSyntax المختلف عادة حيث ان الاوامر عموما أجد معها صعوبة كبيرة فى التأقلم

اللغة من عائلة ال xBase

والتى تضم Dbase و Clipper و FoxPro و xBase++ و FlagShip وغيرها الكثير

هى معروفة بسهولتها .... ولكن اى شىء مهما كان سهل ..... يحتاج الى وقت ومجهود حتى تتقنه وتتعود عليه

وكلما صبرت على الاشياء الغريبة والجديدة .... كلما زادت قدرتك على تعلم الجديد بالنسبة لك

والله الموفق

#4
PWCT Maker كتب:

احب السهر هذه الايام .... رمضان على الابواب .... كل عام وانت بخير :)

وانت بخير حبيبي محمود

PWCT Maker كتب:

اللغة من عائلة ال xBase

والتى تضم Dbase و Clipper و FoxPro و xBase++ و FlagShip وغيرها الكثير

هى معروفة بسهولتها .... ولكن اى شىء مهما كان سهل ..... يحتاج الى وقت ومجهود حتى تتقنه وتتعود عليه

وكلما صبرت على الاشياء الغريبة والجديدة .... كلما زادت قدرتك على تعلم الجديد بالنسبة لك

والله الموفق

المشكلة تكمن هكذا فى ان هذه العائلة تقريبا كان شائع استخدامها فيما مضي حينما كنت انا ما زلت رضيعا او لم اولد

اعتقد ان تأثري بالعصر الحالي ولغاته هو السبب الاكبر

+ لا اعتقد بوجود فائدة حاليا لكن قد يكون هناك مستقبلا فائدة من تعلمها

ملاحظة

ما هو HMG هل هى اختصار لماذا ؟

GoodBye

#5

حيث ان دوال السلاسل النصية التالية جعلتني اشعر بالدوار

- AllTrim()

- Upper()

- Lower()

- SubStr()

- Left()

- Right()

- Ltrim()

- Rtrim()

- Space()

GoodBye

#6
اقتباس

ما هو HMG هل هى اختصار لماذا ؟

اختصار ل HarbourMiniGUI

حيث كانت فى البداية عبارة عن مكتبة صغيرة لدعم امكانية عمل GUI من خلال Harbour-C Interface

اى الربط بين Harbour و لغة C واستخدام Windows API لانشاء النوافذ وعناصر التحكم

وال HMG

هى مشروع للمبرمج الاسبانى Roberto Lopez والذى عمل عليه خلال الفترة 2002-2011

ويوجد الان HMG Extended ويشتمل على تطويرات اكثر لكن على نفس النواة

ويقوم بالتطوير Grigory Filatov و Jacek Kubica و Janusz Pora

بالاضافة لعشرات المساهمين بالاختبار والامثلة

والان يوجد HMG 4 تحت التطوير

ويهدف بدلا من الاعتماد على Windows API الى الاعتماد على HbQt لتكون المكتبة متعددة المنصات

ال HMG 4 من تطوير Roberto Lopez ويشاركه اخرون فى التطوير

والله الموفق

اقتباس

حيث ان دوال السلاسل النصية التالية جعلتني اشعر بالدوار

- AllTrim()

- Upper()

- Lower()

- SubStr()

- Left()

- Right()

- Ltrim()

- Rtrim()

- Space()

ال AllTrim تحذف المسافات على يمين ويسار عبارة حرفية

فمثلا البرنامج التالى سيعرض hello فقط بدون مسافات

x = "       hello          "
x = alltrim ( x )
? x

Upper() jتستخدم لتحويل الحروف الصغيرة الى الكبيرة

مثلا البرنامج التالى سيعرض HELLO

x = " hello "
x = upper (x)
? x

Lower()

تحول الحروف الكبيرة الى صغيرة

مثلا البرنامج التالى سيعرض hello

 x = "HELLO"
x = lower(x)
? x

SubStr()

تستخدم للحصول على عبارة حرفية صغيرة من عبارة حرفية كبيرة

مثلا البرنامج التالى سيطبع على الشاشة كلمة world

x = "hello world"
? substr(x,7,5)

- Left()

تستخدم للحصول على عبارة حرفية داخل اخرى بداية من اليسار

البرنامج التالى سيطبع كلمة hello

x = "hello world"
? left(x,5)

Right()

تستخدم للحصول على عبارة حرفية من داخل عبارة حرفية اخرى بداية من اليمين

البرنامج التالى سيعرض على الشاشة كلمة world

x = "hello world"
? right(x,5)

- Ltrim()

تستخدم لحذف المسافات الموجودة على يسار عبارة حرفية

البرنامج التالى سيعرض كلمة Hello بدون المسافات الموجودة على اليسار

x  = "      Hello"
 ? Ltrim(x)

- Rtrim()

تستخدم لحذف المسافات الموجودة على يمين عبارة حرفية

البرنامج التالى سيعرض كلمة Hello بدون مسافات جهة اليمين

x = "Hello         "
? RTrim(x)

space()

تستخدم لترك مسافات عددها عبارة عن قيمة ترسل لهذه الدالة

مثلا البرنامج التالى يعرض كلمة Hello ثم يترك 10 مسافات ثم يعرض كلمة World

? "Hello" + space(10) + "World"

والله الموفق

2
#7
PWCT Maker كتب:

اختصار ل HarbourMiniGUI

حيث كانت فى البداية عبارة عن مكتبة صغيرة لدعم امكانية عمل GUI من خلال Harbour-C Interface

اى الربط بين Harbour و لغة C واستخدام Windows API لانشاء النوافذ وعناصر التحكم

وال HMG

هى مشروع للمبرمج الاسبانى Roberto Lopez والذى عمل عليه خلال الفترة 2002-2011

ويوجد الان HMG Extended ويشتمل على تطويرات اكثر لكن على نفس النواة

ويقوم بالتطوير Grigory Filatov و Jacek Kubica و Janusz Pora

بالاضافة لعشرات المساهمين بالاختبار والامثلة

والان يوجد HMG 4 تحت التطوير

ويهدف بدلا من الاعتماد على Windows API الى الاعتماد على HbQt لتكون المكتبة متعددة المنصات

ال HMG 4 من تطوير Roberto Lopez ويشاركه اخرون فى التطوير

والله الموفق

ال AllTrim تحذف المسافات على يمين ويسار عبارة حرفية

فمثلا البرنامج التالى سيعرض hello فقط بدون مسافات

x = "       hello          "
x = alltrim ( x )
? x

Upper() jتستخدم لتحويل الحروف الصغيرة الى الكبيرة

مثلا البرنامج التالى سيعرض HELLO

x = " hello "
x = upper (x)
? x

Lower()

تحول الحروف الكبيرة الى صغيرة

مثلا البرنامج التالى سيعرض hello

 x = "HELLO"
x = lower(x)
? x

SubStr()

تستخدم للحصول على عبارة حرفية صغيرة من عبارة حرفية كبيرة

مثلا البرنامج التالى سيطبع على الشاشة كلمة world

x = "hello world"
? substr(x,7,5)

- Left()

تستخدم للحصول على عبارة حرفية داخل اخرى بداية من اليسار

البرنامج التالى سيطبع كلمة hello

x = "hello world"
? left(x,5)

Right()

تستخدم للحصول على عبارة حرفية من داخل عبارة حرفية اخرى بداية من اليمين

البرنامج التالى سيعرض على الشاشة كلمة world

x = "hello world"
? right(x,5)

- Ltrim()

تستخدم لحذف المسافات الموجودة على يسار عبارة حرفية

البرنامج التالى سيعرض كلمة Hello بدون المسافات الموجودة على اليسار

x  = "      Hello"
 ? Ltrim(x)

- Rtrim()

تستخدم لحذف المسافات الموجودة على يمين عبارة حرفية

البرنامج التالى سيعرض كلمة Hello بدون مسافات جهة اليمين

x = "Hello         "
? RTrim(x)

space()

تستخدم لترك مسافات عددها عبارة عن قيمة ترسل لهذه الدالة

مثلا البرنامج التالى يعرض كلمة Hello ثم يترك 10 مسافات ثم يعرض كلمة World

? "Hello" + space(10) + "World"

والله الموفق

شكرا لك على الايضاح الجميل يا محمود

وأحلي تقييم لاغلي صاحب

1

GoodBye

#8

ها افهم اخوي PWCT Maker

من كلامك اني استطيع من خلال Harbour بناء مترجم compliler

للغة

واستيطع صنع لغة واصنع gui و ide ؟

نسخة AGF العربية

النسخة قيد التطوير

رابط النسخة التجريبية

موقع النسخة الرسمي

شعار النسخة :

http://golden-forum.tk/AGF/styles/images/logo.png

<?php
echo ("I love php code ");
print(" Golden Forum Arab");
?>
#9
اقتباس

شكرا لك على الايضاح الجميل يا محمود

وأحلي تقييم لاغلي صاحب

تسلم ياغالى ربنا يخليك :)

اقتباس

ها افهم اخوي PWCT Maker

من كلامك اني استطيع من خلال Harbour بناء مترجم compliler

للغة

واستيطع صنع لغة واصنع gui و ide ؟

نعم ممكن وكمثال عملى

لغة السوبرنوفا Supernova بالنسبة لى قمت بتطويرها عن طريق PWCT

من خلال HarbourPWCT

اى ان الكود الناتج هو كود لغة Harbour

http://supernova.sourceforge.net

ويمكن ان تطبق اساليب متقدمة لتقوم بعمل لغات قوية من حيث الاداء والمزايا

وستجد ال Harbour يوفر لك ماتحتاج له من امكانيات مثله مثل لغات البرمجة العامة متعددة الاغراض

والله الموفق

1
#10
dr.php5 كتب:

ها افهم اخوي PWCT Maker

من كلامك اني استطيع من خلال Harbour بناء مترجم compliler

للغة

واستيطع صنع لغة واصنع gui و ide ؟

ما الذي يمنعك من كتابة Compliler بأى لغة

تقريبا كل لغات البرمجة تستطيع كتابة مترجم أو مفسر بها عدا حالات معينة

1

GoodBye

#11
PWCT Maker كتب:

تسلم ياغالى ربنا يخليك :)

نعم ممكن وكمثال عملى

لغة السوبرنوفا Supernova بالنسبة لى قمت بتطويرها عن طريق PWCT

من خلال HarbourPWCT

اى ان الكود الناتج هو كود لغة Harbour

http://supernova.sourceforge.net

ويمكن ان تطبق اساليب متقدمة لتقوم بعمل لغات قوية من حيث الاداء والمزايا

وستجد ال Harbour يوفر لك ماتحتاج له من امكانيات مثله مثل لغات البرمجة العامة متعددة الاغراض

والله الموفق

ممتاز احلى تقييم لاحسن زميل

1+

اقتباس
ما الذي يمنعك من كتابة Compliler بأى لغة

تقريبا كل لغات البرمجة تستطيع كتابة مترجم أو مفسر بها عدا حالات معينة

1+

احلى تقيم اخوي

بس عندي سؤال انا مبرمج php كيف اصنع compiler من خلالها

؟

نسخة AGF العربية

النسخة قيد التطوير

رابط النسخة التجريبية

موقع النسخة الرسمي

شعار النسخة :

http://golden-forum.tk/AGF/styles/images/logo.png

<?php
echo ("I love php code ");
print(" Golden Forum Arab");
?>
#12
Abdullah.Alshammeri كتب:

تم التعديل بواسطة الشمّري ..

شخصيًا - كعضو عادي في المنتدى هنا، و لو أني لم أقرأ بكثرة عن Harbour من قبل، إلا أن الموضوع أعطاني معلومات لم أفكر يومًا أن أبحث عنها!

من قال أن الأخ محمود يقصد من موضوعه الاعلان عن مشروعه؟ مجرد سطر في آخر الموضوع؟!

إذا أردت أن أكتب عن PHP، بالتأكيد سأفترض أن من يقرأ الموضوع، يعرف Rusmus Lerdorf، و Zeev و Andi (الاسرائيليين)،،، و بما أن الأخ مهتم بهذه اللغة، Harbour، فانه قدم الأسماء، و الله أعلم، على أساس أن بعض الأعضاء قد يعرفونها أو أن البعض سيستفيد من معرفتها (مثلي، استفدت بالتأكيد، و شدني الموضوع للبحث و القراءة أكثر).

أتمنى ألا أكون تدخلت فيما لا يعنيني، فقط شعرت أن أخي محمود لم يقصد أن "يخلق حالة انبهار" أو أن يعلن عن مشروعه ((فقط)).

أعتذر.

شكرًا.

#13

المعذرة ، فهمت الموضوع بطريقة مختلفة 180 درجة ..

آسف ، أخ sitemaker لحذف جزئية الاقتباس .. لأني أضفت مشاركة " خاطئة " بحق صاحب الموضوع ،

والمعذرة لصاحب الموضوع PWCT على إضافة رد غبي ليس له معنى ، فهمت بطريقة خاطئة ... لأن الموضوع لم يكن واضح ، وقد حذفت مشاركتي التي لم يكن لها معنى ..

1 −1

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#14
dr.php5 كتب:

بس عندي سؤال انا مبرمج php كيف اصنع compiler من خلالها

؟

لا تستطيع لغة PHP مفسرة يمكنك كتابة مفسر بالاعتماد عليها

يمكنك مشاهدة لغة الاخ sitesmaker

التي قام بتطويرها فالفكرة العامة لما تريده متشابهة مع ما قام به

GoodBye

#15
dr.php5 كتب:

بس عندي سؤال انا مبرمج php كيف اصنع compiler من خلالها

؟

MohamedIBrahim كتب:

لا تستطيع لغة PHP مفسرة يمكنك كتابة مفسر بالاعتماد عليها

يمكنك مشاهدة لغة الاخ sitesmaker

التي قام بتطويرها فالفكرة العامة لما تريده متشابهة مع ما قام به

لا أريد الخروج عن الموضوع. لكن، هناك نقطتين أود أن أذكرهما:

النقطة الأولى: فكرة "مفسر" ليست عيبًا و لا هي شيء سيئ! بالعكس، هي عادةً الأفضل للويب. تخيل برمجة صفحة ويب، و حاجة ذلك لتشغيل برنامج على كل ملف لمجرد تجربته! المفسر (Interpreter)، هو - حسب معرفتي القليلة - تقريبًا Compiler، لكنه يعمل لحظة طلب تشغيل الكود "كل مرة"، بدلاً من مرة واحدة. -- ليس فرقًا قاتلًا إذن!

النقطة الثانية: يمكن في نظري بناء Compiler بـPHP!! ما المشكلة؟ Compiler يحول C إلى Assembly مثلاً! هل هناك مشكلة في ذلك؟ - طبعًا غير صعوبة القيام بذلك، بما أن PHP، ليست مصممة لهذه الأغراض (في حالة C و Assembly و هذه اللغات).

ربما يكون المقصود هو تحويل الكود إلى PHP أيضًا، و ليس إلى لغة أخرى كـAssembly، و هذا بالطبع أسهل كثيرًا. في هذه الحالة، لا أجد مشكلة في Compiler يحول لغة إلى PHP، بدلاً من تحويلها كل مرة يتم تشغيل الملف! مما يعطي دفعةً كبيرة - بل ضخمة - للسرعة في تلك اللغة! فحسب تجربتي البسيطة، في لغة SMPL، إنشاء مفسر أو Translator (مترجم) باستخدام لغة كـPHP، له مميزاته من سهولة التطوير، و سهولة تشغيل اللغة - إذا كانت للويب - ببساطة على أغلب السيرفرات، و لكن له عيوبه الكبيرة من ناحية السرعة!

أخيرًا، أختم بسؤال لأخي PWCT Maker لما له من خبرة في هذا المجال. قرأت في موضوع سابق لك أخي، أن Translator، يختلف عن Compiler في أنه لا يتحقق من صحة الكود، و إنما يترجم بين لغتين من نفس المستوى تقريبًا فقط، و الكود الخاطئ، يحول لكود خاطئ. جميل. ما الاسم الأنسب اذن، للتحويل بين لغتين من نفس المستوى تقريبًا، بتحقق (بسيط نوعًا ما، و غير كامل 100%) من صحة الكود، و بدلًا من تشغيل الكود، و تسجيل المتغيرات و القيام بهذه الأشياء، يتم التحويل إلى الكود المطابق في المعنى من اللغة الأخرى (لكنه بعد التحقق من صحة الكود).

شكرًا لكم.

تم تعديل هذه المشاركة بواسطة sitesmaker في 25 يوليو 2011 في 20:16

#16
sitesmaker كتب:

لا أريد الخروج عن الموضوع. لكن، هناك نقطتين أود أن أذكرهما:

النقطة الأولى: فكرة "مفسر" ليست عيبًا و لا هي شيء سيئ! بالعكس، هي عادةً الأفضل للويب. تخيل برمجة صفحة ويب، و حاجة ذلك لتشغيل برنامج على كل ملف لمجرد تجربته! المفسر (Interpreter)، هو - حسب معرفتي القليلة - تقريبًا Compiler، لكنه يعمل لحظة طلب تشغيل الكود "كل مرة"، بدلاً من مرة واحدة. -- ليس فرقًا قاتلًا إذن!

من قال أنه عيب بالطبع انا لا اعتبره عيبا لكني كنت اجيب على سؤال محدد للاخ الكريم وهو بناء مترجم وليس مفسر

sitesmaker كتب:

النقطة الثانية: يمكن في نظري بناء Compiler بـPHP!! ما المشكلة؟ Compiler يحول C إلى Assembly مثلاً! هل هناك مشكلة في ذلك؟ - طبعًا غير صعوبة القيام بذلك، بما أن PHP، ليست مصممة لهذه الأغراض (في حالة C و Assembly و هذه اللغات).

ربما يكون المقصود هو تحويل الكود إلى PHP أيضًا، و ليس إلى لغة أخرى كـAssembly، و هذا بالطبع أسهل كثيرًا. في هذه الحالة، لا أجد مشكلة في Compiler يحول لغة إلى PHP، بدلاً من تحويلها كل مرة يتم تشغيل الملف! مما يعطي دفعةً كبيرة - بل ضخمة - للسرعة في تلك اللغة! فحسب تجربتي البسيطة، في لغة SMPL، إنشاء مفسر أو Translator (مترجم) باستخدام لغة كـPHP، له مميزاته من سهولة التطوير، و سهولة تشغيل اللغة - إذا كانت للويب - ببساطة على أغلب السيرفرات، و لكن له عيوبه الكبيرة من ناحية السرعة!

هذا ما يسمي Translator وهو ما يختلف عن Compiler والذي تكلمت عنه فى كلامك السابق وهو لو راجعت كلام الاستاذ محمود فايد (PWCT Maker) قام بشرحه فيمكنك مراجعة الشرح

ويمكنك الاستعانة بهذا الشرح

http://www.dreamincode.net/forums/showtopic153718.htm

وهذا السؤال

http://stackoverflow.com/questions/3455456/how-to-translate-between-programming-languages

والله ولي التوفيق

تم تعديل هذه المشاركة بواسطة MohamedIBrahim في 25 يوليو 2011 في 21:32

1

GoodBye

#17
MohamedIBrahim كتب:

من قال أنه عيب بالطبع انا لا اعتبره عيبا لكني كنت اجيب على سؤال محدد للاخ الكريم وهو بناء مترجم وليس مفسر

كنت فقط أوضح لأخي dr.php5.. لا أكثر.

MohamedIBrahim كتب:

هذا ما يسمي Translator وهو ما يختلف عن Compiler والذي تكلمت عنه فى كلامك السابق وهو لو راجعت كلام الاستاذ محمود فايد (PWCT Maker) قام بشرحه فيمكنك مراجعة الشرح

ويمكنك الاستعانة بهذا الشرح

http://www.dreaminco...topic153718.htm

وهذا السؤال

http://stackoverflow...mming-languages

والله ولي التوفيق

أشكرك، +1.

مواضيع مشابهة