عرض مشاركة واحدة
قديم 10-07-2010, 04:52 AM   #3
nermine
مشرفة منتدى الأعمال
الصورة الرمزية nermine

المعلومات





آحدث المواضيع


الاتصال

nermine غير متصل

nermine is on a distinguished road
افتراضي رد: كيفية تعامل mql4 مع الملفات برمجيا

نكمل هذا الدرس الهام مع بعض الأمثلة البسيطة لتطبيق المفاهيم السابقة التي تعلمناها سابقا .

مثال عن فتح ملف نصي للقراءة فقط :

في هذه الحالة يجب أن يكون الملف موجودا على القرص .

في حال لم يكن الملف موجودا أصلا فإن خطأ سوف يحدث ولن نحصل على رقم أو مقبض هذا الملف .

كود PHP:

int handle;


handle=FileOpen("data.csv",FILE_CSV|FILE_READ,';');


if(handle<1)


{


Print("File not found, the last error is ", GetLastError());


return(false);


}


.....





لاحظوا الوظيفة FileOpen تحتاج ثلاثة متحولات وهي:

- المتحول الأول اسم الملف الذي نريد فتحه ونحن أحرار في اختيار الاسم والامتداد الذي نريده ولسنا مقيدين بشروط خاصة .

- المتحول الثاني هو عبارة عن خصائص الملف المفتوح هل هو للقراءة فقط أو للقراءة والكتابة أو للكتابة فقط .

ونحدد ذلك بواسطة المتحولات FILE_READ - FILE_WRIT . والدمج بينهما عن طريق الحرف |

من نفس هذا المتحول نستطيع تحديد نوع الملف المفتوح هل هو نصي أم ثنائي .

الملف النصي نعرفه على أنه FILE_CSV والثنائي FILE_BIN ولا يمكن الدمج بين الحالتين أي أننا يجب أن نختار حالة واحدة فقط .

في مثالنا السابق حددنا نوع الملف على أنه نصي وأنه للقراءة فقط .

- المتحول الثالث هو الفاصل الإفتراضي بين المعلومات المكتوبة على الملف وهو هنا الحرف ؛ الفاصلة المنقوطة .

يمكن تحديد أي حرف آخر ولكن يفضل تركه كما هو لأنه قياسي بالنسبة للبرامج الأخرى مثل الاكسيل مثلا .


مثال عن طريقة كتابة معلومات نصية إلى الملف النصي :

في هذا المثال سوف نتعرف على طريقة كتابة بعض المعلومات التي نريدها إلى ملف نصي وذلك بواسطة الوظيفة FileWrite

كود PHP:

int handle;


handle=FileOpen("data.csv",FILE_CSV|FILE_WRITE,';');


FileWrite(handle,Time[0],Close[0],Open[0],High[0],Low[0]);


FileClose(handle);






في المثال السابق فتحنا الملف النصي data.csv للكتابة فقط . وفي هذه الحالة في عدم وجود الملف مسبقا فإن هذه الوظيفة سوف تنشأه دائما .

أي أنها سوف تحذف الملف القديم وتنشيء ملفا جديدا كل مرة تنفذ فيها هذه الوظيفة .

بعد ذلك استخدمنا الوظيفة FileWrite لكتابة سطر كامل من المعلومات وهي هنا معلومات الشمعة الأخيرة .

إذا نفذنا الكود السابق وفتحنا الملف data.csv فإننا سنجد فيه سطرا واحدا فقط يحتوي على معلومات الشمعة الأخيرة يفصل بين
كل معلومة وأخرى الحرف ؛ .

إذا أردنا كتابة كل معلومات الشارت إلى الملف النصي فإننا سوف نستخدم حلقة لكافة شموع الشارت ويصبح المثال على الشكل
التالي :

كود PHP:

int handle;


handle=FileOpen("data.csv",FILE_CSV|FILE_WRITE,';');


for(int i =0;i<=Bars;i++)


{


FileWrite(handle,Time[i],Close[i],Open[i],High[i],Low[i]);


}


FileClose(handle);





يجب الانتباه إلى أن التعامل مع الملفات الكبيرة ككتابة يجب أن تكون من خلال اسكريبت وليس من خلال مؤشر .

لأنه من غير المعقول كتابة معلومات شموع الشارت كله إلى ملف نصي في كل مرة يتحرك بها السعر .

م/ن للفائدة
تحياتي
نرمين من المغرب.






رد مع اقتباس