بسم الله الرحمن الرحيم
مرحبا بكم في الدرس الثامن ... بيانات ما قبل المعالجة في لغة 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 ) مجرد و خالي من اي اقواس او اسماء
كود PHP:
#import
في الدرس القادم بأذن الله ستبدأ ببرمجة مؤشرك الأول (جزء 1)
اراكم على خير مجددا