 |
29-06-2009, 05:25 PM
|
#1 (permalink)
|
|
المدير التنفيذي للموقع الالكتروني
|
دورة تعليم لغة MQL4 (المحاضرة التاسعة )
بسم الله الرحمن الرحيم
مرحبا بكم في الدرس الثامن ... بيانات ما قبل المعالجة في لغة MQL4
ماذا نعني بهذه البيانات ؟
هذه البيانات هي تعليمات يقوم المبرمج بتزويدها للمجمع compiler ليقوم بحفظها كما هي قبل معالجة الكود .
بمعنى اخر , خلال عملية التجميع compile (راجع مقدمة الدروس) يقوم المجمع compiler بتحويل برنامجك (بعد انتهائك منه) من لغتنا البشرية الى لغة الألة (الواحد والصفر) ليقوم بعمله .
حسنا ماذا لو اردت منه ان لا يقوم بتحويل بعض التعليمات الى لغة الألة واخراجها كما هي بلغتنا ( كرابط موقع مثلا او تعريف بصانع الكسبرت وحقوقه .. الخ) ؟
هذه البيانات وتسمى preprossesors ( اي قبل المعالجة ) تقوم بهذه الوظيفة .
مثال :
كود PHP:
#include <win32.h>
هذا الأمر( كما سنعرف لاحقا) يقوم بأخذ محتويات الملف win32.h (ملف به عنوانك مثلا) ووضعه داخل البرنامج دون تغيير فيه , فقط يقوم بفتح محتوياته داخل البرنامج ايا كانت .
هناك 4 انواع من هذه البيانات في لغة MQL4 :
1- بيان التعريف define directive :
وهو الأمر الذي ينتج ثابت ما ..
لا حظ الفرق بين المتغير والثابت فالأول يأخذ قيم متغيرة طوال الوقت سواء من المبرمج او المستخدم او الشارت , اما الثابت فهو ذو قيمة محددة لا تتغير ابدا .
مثال :
كود PHP:
#define my_constant 100
كما تلاحظ في المثال اعلاه لا توجد علامة المساواة ( = ) فقط فراغ space بين اسم الثابت (my_constant ) وبين قيمته ( 100 )
كما يمكنك ان تلاحظ ايضا عدم انتهاء الجملة بأي من علامات الترقيم مثل الفاصلة المنقوطة مثلا ; . وانما انتهت بمجرد انتقالنا الى سطر جديد في البرنامج .
اسم الثابت يخضع لجميع القواعد الخاصة التي تعلمتها الخاصة بتسمية المعرفات ( راجع درس ال SYNTAX ) , مثلا لا يمكنك ان تبدأ برقم او تزيد عدد الأحرف اكثر من 31 حرف مثلا .
يمكنك ان تضع اي قيمة تريدها من اي نوع لهذا الثابت في البداية .
ان استخدمته في كود ما سيتامل معه البرنامج كقيمة ثابتة كما تمت كتاتها .
وهكذا يمكن كتابته على النحو التالي :
كود PHP:
sum = constant1 * 10;
2- بيان الملكية property directive :
هل تتذكرون عبارة “Controlling Compilation” السابق ذكرها في الدرس الأول وأخبرتكم وقتها ان شرحها سيأتي لاحقا .
حسنا , هي احد خواص لغة MQL4 التي تسمح لك بوضع البيان ( prperty ) وامامه اي جملة ( او قيمة ) وسيخرجها المجمع compiler كما هي في ملف البرنامج المستخدم من قبل الألة ( ex4. ) .
امثلة :
كود PHP:
#property link "http://www.forex-tsd.com" #property copyright "Anyone wants to use"
وهذه قائمة بمعرفات هذا البيان :
3- بيان الإحتواء include directive :
عندما تخبر البرنامج بالأمر (include) لملف خارجي ما , فكأنك تماما تقوم بنسخ محتويات هذا الملف داخل سطر ( include ) داخل البرنامج .
مثال :
كود PHP:
#include <win32.h>
في المثال اعلاه انت اخبرت الكومبيوتر بفتح الملف (win32.h) وقراءته ونسخ محتوياته داخل جملة ( include ).
حسنا , ما معنى القوسين < > في المثال اعلاه ؟
هما لتحديد مكان الملف المراد قراءته ( win32.h ) , وهنا القوسين < > يحددان المكان (المجلد) الإفتراضي لأي ملف داخل الميتاتريدر على هذا الأمتداد : (metatrader 4\experts\include) .
طيب ماذا لو كان الملف المراد قراءته في مكان أخر ؟
لو كان في نفس مجلد البرنامج , نضع اسمه مباشرة بين العلامتين " " .
مثال :
كود PHP:
#include “mylib.h”
ولو كان في مجلد أخر ( مثلا داخل مجلد D:\books ) نضع اسمه هكذا :
كود PHP:
#include “D:\books\mylib.h”
وفي جميع الحالات ان لم يجد البرنامج الملف في مكانه سيقوم بإصدار رسالة ( error ) اي خطأ في البرنامج .
يمكننا استخدام الأمر ( include ) في اي سطر من البرنامج ولكن جرت العادة ان يكون في رأس البرنامج .
4- بيان الإستيراد import directive : (هذا الأمر للقراءة وهو للمتخصصين فقط )
هو يشبه تماما الأمر السابق ( include ) من حيث جلبه لملف خارجي .
ولكنه يختلف عنه في نوع الملف , فهو يقوم بقراءة الملفات ذات الأمتدادات ( dll. ) و ( ex4. ) لوضعها داخل اكواد البرنامج .
مثال :
كود PHP:
#import "user32.dll" int MessageBoxA(int hWnd,string lpText,string lpCaption, int uType); int MessageBoxExA(int hWnd,string lpText,string lpCaption, int uType,int wLanguageId); #import "melib.ex4" #import "gdi32.dll" int GetDC(int hWnd); int ReleaseDC(int hWnd,int hDC); #import
متى ادخلت دوال خاصة بملف ( ex4 ) فلن تحتاج ان تقوم بإعداداها declaration داخل البرنامج الأصلي.
لكن متى ادخلت دوال من ملف ( dll ) فيجب عليك اعداداها اولا داخل البرنامج الأصلي ( وذلك لأختلاف اللغة فقد يكون الملف مصدره لغة ال C مثلا فيجب وقتها ان توافق بين اللغتين )
مثال :
كود PHP:
int MessageBoxA(int hWnd,string lpText,string lpCaption,
int uType);
وستعمل الدوال التي اعددتها فقط في البرنامج .
يجب ان تنهي امر ( import ) بسطر ( import ) مجرد و خالي من اي اقواس او اسماء
في الدرس القادم بأذن الله ستبدأ ببرمجة مؤشرك الأول (جزء 1)
|
|
|
|
الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
|
|
|
(عرض الكل)
الاعضاء الذين شاهدو هذا الموضوع: 24
|
|
ماهر العمر, ADHAM, محمد القلعاوى, cadecortx, العابد7, dentin, gaelmesabos, hany_elkoptan, hasan, hluvr, حسين الصائغ, khalidaalmasry, king alx, laith_r, M!Ss.Do3n, Monostar, MR.S, زهور احمد, pghdad_1, raid, ralph kabota, sam_samir3, soma1970
|
| أدوات الموضوع |
|
|
| انواع عرض الموضوع |
العرض العادي
|
تعليمات المشاركة
|
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك
كود HTML معطلة
|
|
|
| عزيزي العضو/الزائر.. نحيطك علماً بأن مواضيع المنتدى لاتمثل رأي الإدارة وإنما تمثل رأي كاتبها. |
|