المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : سلسلة شروحات الأكشن سكريبت رقم 5 التعامل مع الملفات النصية TextFile


عبود عبود
27-01-2015, 08:57 PM
http://i.imgur.com/57UrtCm.gif

http://i.imgur.com/emf2NIh.gif

سلسلة شروحات الأكشن سكريبت رقم 5 التعامل مع الملفات النصية " TextFile "



: Table Of Contacts


TextFile.ReadToString
TextFile.ReadToTable
TextFile.WriteFromString
TextFile.WriteFromTable




http://i.imgur.com/g4KNTGz.gif


TextFile.ReadToString


يمكن من خلال إستعمال هذا الكود قراءة النصوص المخزنة فى ملف ما
وتخزين النتيجة فى متغير يمكن من خلالة إستدعاء ما تم قراءتة .


http://i.imgur.com/CWu1vHx.png



1- "Filename" هو المسار الكامل للملف المراد قراءتة نصيا .
2- " ResultVariable" هو المتغير المراد حفظ نتيجة القراءة فية حتى يسهل إستدعاءها وإستخدامها فيما بعد ففى حالة عدم وجود خطأ فى القراءة يكون الريتيرن هو النص المقروء وفى حالة وجود خطأ يكون الريتيرن هو نص فارغ "" .



http://i.imgur.com/g4KNTGz.gif


TextFile.ReadToTable


يعمل أو يستخدم هذا الكود لقراءة النصوص المكتوبة فى ملف ما
ويتم تسجيلها أو تخزينها على هيئة جدول أى أن القراءة تكون سطريا .


http://i.imgur.com/OLZDzFA.png


1- "Filename" هو المسار الكامل للملف المراد قراءتة جدوليا أو سطريا .
2- " ResultVariable" هو المتغير المراد حفظ نتيجة القراءة فية حتى يسهل إستدعاءها وإستخدامها فيما بعد ففى حالة عدم وجود خطأ فى القراءة يكون الريتيرن هو النص المقروء وفى حالة وجود خطأ يكون الريتيرن nil .
ويتم التخزين على شكل جدول أى أن كل سطر يكون له رقم كإندكس مخصص له .


http://i.imgur.com/g4KNTGz.gif


TextFile.WriteFromString


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


http://i.imgur.com/loN1d3A.png


1- "Filename" هو المسار الكامل للملف المراد التخزين أو الحفظ فية.
2- "Text" هو النص المراد حفظه أو تخزينة داخل الملف المحدد مسبقا .
3- "Append" يمكن إستخدام إحدى القيمتين البولينيتين إما true فى حالة الرغبة بإلحاق النص الجديد إلى نص آخر قديم موجود مسبقا فى الملف المراد التخزين فية ويتم الإلحاق بعد نهاية الحرف الأخير من النص القديم .
أو false فى حالة أن تريد الكتابة من جديد إلى الملف النصى المحدد مسبقا فإذا كان يحتوى على بيانات يتم الكتابة عليها أى يكون إستبدال .


http://i.imgur.com/g4KNTGz.gif


TextFile.WriteFromTable


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



http://i.imgur.com/sqB6X3D.png


1- "Filename" هو المسار الكامل للملف المراد التخزين أو الحفظ فية.
2- "Table" هو الجدول النصى المراد حفظه أو تخزينة داخل الملف المحدد مسبقا .
3- "Append" يمكن إستخدام إحدى القيمتين البولينيتين إما true فى حالة الرغبة بإلحاق النص الجديد إلى نص آخر قديم موجود مسبقا فى الملف المراد التخزين فية ويتم الإلحاق بعد نهاية الحرف الأخير من النص القديم .
أو false فى حالة أن تريد الكتابة من جديد إلى الملف النصى المحدد مسبقا فإذا كان يحتوى على بيانات يتم الكتابة عليها أى يكون إستبدال .


http://i.imgur.com/g4KNTGz.gif


http://i.imgur.com/2GnNEXz.gif

http://i.imgur.com/Nz3B0Vj.gif

فرح صالحي
27-01-2015, 09:07 PM
شرح جلي وواضح
جازاك الله خيرا كثيرا
:abc_152:

azizsoft
27-01-2015, 09:08 PM
بسم الله الرحمن الرحيم

جزاكم الله خيرا أخي أمير
شروحات منسقة وقيمة ونافعة

ودي وتقديري
:abc_022:

عبود عبود
27-01-2015, 09:36 PM
جزاكم الله خيرا على المرور الجميل :abc_138:

ثامر أبو بلقيس
27-01-2015, 09:48 PM
السلام عليكم ورحمة الله وبركاته

شروحات ممتازة جمالها في البساطة و الوضوح و الحرص على ايصال المعلومة
كالعادة أوصي نفسي و إخواني محبي التعلم بالقراءة المرفوقة بالتجربة
أحسنت أخي :abc_138:

لي عودة ان شاء الله لاثراء الموضوع بعد نفاذ مدة التساؤلات

عبود عبود
27-01-2015, 10:29 PM
جزاكم الله خيرا للمرور الجميل أخى ثامر

ياسرهتهت
28-01-2015, 11:52 AM
بسم الله الرحمن الرحيم
:abc_152:شكراً لك استاذ عبود :abc_152:
علي هذا الشرح الرائع والواضح كالعادة في سلسلة شروحاتك المميزة
والمفيدة جداً ---- (جازك الله كل خير) ----
====================

اخي الكريم تم تطبيق الشرح بنجاح
ويتم حفظ البيانات (النصوص) وجلبها بشكل ممتاز
لكامل الاسطر والنصوص في الملف النصي
سؤالي -- كيف استدعي من ملف نصي يحتوي على عشرات الاسطر
الخمس اسطر الاخيرة او الثلاث اسطر الاولي
------
سؤالي الثاني -- عندي ملف (فولدر) يحتوي مئات الملفات النصية ؟
هل من الممكن عمل بحث عن طريق Input ادخل فيه اسم الملف النصي المراد البحث عنه.
و---ListBox-- لاظهار نتائج البحث للاسم المدخل مع مرعات عدم الدقة
اي يظهر كل الملفات التي تتطابق مع الاربع احرف الاولي في الاسم المدخل
مع العلم ان اسماء الملفات بالعربي ، والانجليزي ، تواريخ ، وارقام
====================================
:abc_145: اعرف ان اسئلتي كثيرة و انني طماع في كرمك ونبل اخلاقك :abc_145:
تحياتي وشكري لك استاذ عبود
:abc_152::abc_152:

عبود عبود
28-01-2015, 12:48 PM
تشرفت بمرورك أخى ياسر

بالنسبة للسؤال الأول إنظر إلى الكود التالى :

--
result = TextFile.ReadToTable("AutoPlay\\Scripts\\Scintilla.lua");
for i, d in pairs(result) do
if i==2475 then
Input.SetText("Input1", d);
end
end

نتيجة الكود السابق هو عرض السطر رقم 2475
وهنا قلت عرض وليس قراءة لأنة بالفعل جميع الأسطر تم قراءتها فعليا بالكود السابق TextFile.ReadToTable وتم تخزينها على شكل جدول فى المتغير result

إذا إستفدت أخى أنصحك بمراجعة قراءة سلسلة شروحات الأكشن سكريبت رقم 2 المصفوفات جزء أول (http://www.abc4web.net/vb/showthread.php?t=27618) ... و .... سلسلة شروحات الأكشن سكريبت رقم 3 المصفوفات جزء ثانى (http://www.abc4web.net/vb/showthread.php?t=27640)


http://www.abc4web.net/vb/images/icons/icon_z.gif السؤال الثانى نؤجلة قليلا إلا إذا كان ضروريا فيمكن الإجابة عنه اليوم " كما تريد أخى ".


:abc_138:

أبو فارس
28-01-2015, 01:20 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

أبو يوسف
28-01-2015, 05:11 PM
سلسلة طيبة من اخ طيب

بارك الله فيك أخانا عبود

.

عبود عبود
28-01-2015, 06:05 PM
:abc_145: اعرف ان اسئلتي كثيرة و انني طماع في كرمك ونبل اخلاقك :abc_145:

:abc_152::abc_152:

مرحبا بأى سؤال وفى أى وقت
إسأل إلى أن ترتكز عندك المعلومة بشكل جيد ولو حتى مليوووووون سؤال

تحياتى لك أخى العزيز :abc_022:

عبود عبود
28-01-2015, 06:09 PM
جزاكم الله خيرا إخوانى أبوفارس و أبويوسف على المرور الطيب

تحياتى :abc_152:

ياسرهتهت
28-01-2015, 07:06 PM
بسم الله الرحمن الرحيم
شكراً لك اخي عبود علي رحابة الصدر
وهذا الرد المشجع
------------
جربت الكود
result = TextFile.ReadToTable("AutoPlay\\Scripts\\Scintilla.lua");
for i, d in pairs(result) do
if i==2475 then
Input.SetText("Input1", d);
end
end

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

result = TextFile.ReadToTable("AutoPlay\\Docs\\ASH.txt");
Input.SetText("Input2", result[33]);
يحضر السطر المطلوب
-------
طبعا اخي العزيز لم افهم
for i, d
اليس ------d---- مفروض عدد الاسطر في الملف
-----------
اما السؤال الثاني خذ راحتك واجبني عنه عندما يسمح وقتك
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .
:abc_152::abc_152::abc_152:

ثامر أبو بلقيس
28-01-2015, 07:27 PM
d ليس عدد الاسطر وسيجيبك أخي عبود

لكن دعني أنقل تفكيرك لتعامل مع النصوص بطريقة مختلفة بدون استعمال أكواد البرنامج
و حتى أقرب لك ما وددتك الخوض فيه سيكون هذا الكود الذي سيجيب عن تساؤلك
إن شاء الله
01 - نعلن عن مصفوفة
my_table = {};
02- قراءة محتوى المستند من مساره
bel = io.input("AutoPlay\\Docs\\1.txt")
03- نعلن عن قيمة ستتزايد
x =0
04- سيتم تكرار قراءة الأسطر من المستند
repeat
k = bel:read ("*l")
الحرف L دال على الأسطر
05 - اذا تم قراءة سطر
if k then
06- سيضاف لقيمة X العدد 1 أي بدأ العد
x=x+1
07 - سيتم تخزين في المصفوفة المعلن عنها رقم السطر و محتواه
Table.Insert(my_table, x, k);
08- اغلاق التكرار عند قراءة و تخزين السطر الأخير
end
until not k
09- كل هذا يتم و المستند النصي مغلق
bel:close ()
10- نكتب الان دالة تكرارية تبدأ من آخر سطر مطروح منه عدد الاسطر التي
نريد استخلاصها
for i =(x+1)-5,x do

رقم 5 أي الأسطر الخمسة الأخيرة اذا أردت 6 أو 7 أسطر الاخيرة
غير فقط الرقم 5
11- نظهر الناتج في رسالة للمعاينة
Dialog.Message("Notice", my_table[i]);
12 - انتهى
end

جمع أكوادك مرتبة و موفق :abc_138:

ثامر أبو بلقيس
28-01-2015, 10:01 PM
جيد هاك حل آخر باستعمال TextFile.ReadToTable

x = TextFile.ReadToTable("AutoPlay\\Docs\\1.txt");
for i =table.getn(x),(table.getn(x)+1)-5,-1 do
Dialog.Message("Notice", x[i]);
end

نلتقي بود :abc_138:

عبود عبود
28-01-2015, 10:02 PM
طبعا اخي العزيز لم افهم
for i, d
اليس ------d---- مفروض عدد الاسطر في الملف

:abc_152::abc_152::abc_152:



:abc_086: لا ليس عدد الأسطر

-----------

من المعروف أن فور "for" هى دالة تستخدم لتكرار عملية ما وطبعا يوجد دوال أخرى ولكننا نتكلم الآن عنها .
()pairs هى وظيفة تستخدم لإعطاء أزواج من " مفتاح و قيمة " لكل عنصر من عناصر الجدول .
من المعروف أن الجدول هو هو المصفوفة .
لماذا نريد أن نستخدم الوظيفة pairs مع جدول ؟ لأننا لا نعرف ترتيب العناصر داخل هذا الجدول " مش عارف مين فين " :abc_065: لأننا لو كنا نعلم لإستدعينا القيمة التى نريدها مباشرة من الجدول لأننا نحن الذى وضعنا عناصر هذا الجدول وذاكرتنا من حديد :abc_070:
إذن الوظيفة السابقة pairs سوف تتعامل مع محتويات الجدول المراد الحصول منه على معلومات أو قيم أو الإثنين معا .
إذن الشكل أو شكل الوظيفة مع الجدول سيكون (pairs(result حيث result هو المتغير المخزن فية الجدول السابق من نتيجة قراءة ملف التكست قراءة جدولية كما ذكرنا سابقا .

إذن سنكرر عرض مفتاح وقيمة من الجدول .

فكان الآتى :

for i, d in pairs(result) do

حيث i هو المفتاح مهما تغير إسمة أو تلون بأى حرف أو لبث أى ثوب أو كتب بأى شكل أو إسم ....... يعنى هنقفشك يا معلم كدة كدة إنت معروف من مكانك دائما يكون المفتاح فى حالة إستخدام الوظيفة pairs هو التالى لكلمة التكرار for .
وهنا نحن نقرأ ملف تكست إذن هو مكتوب كأسطر إذن المفتاح هو السطر أو رقم السطر .

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

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

إذن قمت بالإشتراط على عملية التكرار حتى يظهر العرض المطلوب فقط إذن كان من الممكن وضع أى شرط آخر على سبيل المثال :
عدد السطور المخزنة فى ملف تكست كان 15 سطر وأريد عرض آخر سطرين فقط فإن الشرط سيكون :

--
result = TextFile.ReadToTable("AutoPlay\\Scripts\\Scintilla.lua");
s=""
for i, d in pairs(result) do
if i>13 and i<=15 then
s=s.."\r\n"..d ;
end
end
Input.SetText("Input1", s);


http://www.abc4web.net/vb/images/icons/abc00.gif إحذر من أن تقول فهمت ولم تفهم وإحذر أن تكون غير مستوعب ولم تسأل عن ما لم تستوعبه .

عبود عبود
28-01-2015, 10:05 PM
تحياتى لك أخى ثامر لإثراء الموضوع ولكن هذا الشرح أو التوضيح الذى تضعة "للمحترفين"

طبعا مرحبا به أن يوضع هنا للإثراء فـــ بالفعل أنا إستفدت منه :abc_138:

ثامر أبو بلقيس
28-01-2015, 10:54 PM
بارك الله فيك أستاذ عبود على نبل أخلاقكم

هاك حل أخر أخي ياسر باستعمال
التعبير for i, d in pairs(result) do
result = TextFile.ReadToTable("AutoPlay\\Docs\\1.txt");
for i, d in pairs(result) do
y = Math.Max(0, i);end
for t =y,(y+1)-5,-1 do
Dialog.Message("Notice", result[t]);
end

نلتقي بود :abc_138:

ياسرهتهت
29-01-2015, 02:39 AM
بسم الله الرحمن الرحيم
شكراً لك استاذي الفاضل
:abc_152: ابو بلقيس :abc_152:
علي هذا الكود الاحترافي
my_table = {};
bel = io.input("AutoPlay\\Docs\\1.txt")
x =0
repeat
k = bel:read ("*l")
if k then
x=x+1
Table.Insert(my_table, x, k);
end
until not k
bel:close ()
for i =(x+1)-5,x do
Dialog.Message("Notice", my_table[i]);
end

:abc_052:تم التطبيق بنجاح :abc_052:
وهو كود احترافي صعب عليه فهمه :abc_102:
-------------------------------------------------
اما الكود الثاني
x = TextFile.ReadToTable("AutoPlay\\Docs\\1.txt");
for i =table.getn(x),(table.getn(x)+1)-5,-1 do
Dialog.Message("Notice", x[i]);
end
ايضا كود رائع تم التطبيق بنجــــــــــــــاح
وهذا استوعبته وفهمته تماماً
بارك الله فيك استاذي الكريم
:abc_138::abc_138:

ياسرهتهت
29-01-2015, 02:57 AM
بسم الله الرحمن الرحيم
شكراً استاذ عبود علي الشرح والايضاح
وتبسيــــــــط الفكــــــــــــــــــــر ة
لقد وصلت المعلومة وفهمت هذا الكود
result = TextFile.ReadToTable("AutoPlay\\Scripts\\Scintilla.lua");
s=""
for i, d in pairs(result) do
if i>13 and i<=15 then
s=s.."\r\n"..d ;
end
end
Input.SetText("Input1", s);

وتم التطبيق بنجــــــــــــــاح
===========
وهذا ملف مفتوح

http://im71.gulfup.com/vTyRFK.png




http://www.gulfup.com/?18rIIU

يحتوي على هذا الكود و الاكواد التي تفضل بها الاستاذ ابو بلقيس

اجدد شكري وتقديري لمجهودك واسلوبك المميز في ايصال المعلومة
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .
:abc_152::abc_152::abc_152:

ياسرهتهت
29-01-2015, 03:10 AM
هاك حل أخر أخي ياسر باستعمال
التعبير for i, d in pairs(result) do
كود PHP:
result = TextFile.ReadToTable("AutoPlay\\Docs\\1.txt");
for i, d in pairs(result) do
y = Math.Max(0, i);end
for t =y,(y+1)-5,-1 do
Dialog.Message("Notice", result[t]);
end

======================================
شكراً جزيلاً استاذي العزيز
علي هذا التنوع والاثراء والاهتمام
زادك الله علماً ونور
تم التطبيق بنجـــــــاح
تقبل تحياتي وتقدير واحترامي
:abc_152::abc_152::abc_152:

ثامر أبو بلقيس
29-01-2015, 12:33 PM
موفق أخي ياسر ... طالما اخترت بناء التساؤلات
كوسيلة للمعرفة وترسيخ المعلومة ستصل بإذن الله :abc_138:
موفق :abc_138:

فرح صالحي
29-01-2015, 02:22 PM
بصراحة اردت التطبيق لكن ما عرفتش الشمال من الجنوب
لازم اخواني شرح ليس للمبتدئين ولكن للحضانة اي تحت المبتدئين
يعني متى علينا استعمال الحدث on preload
on show
on close
on timer الى آخره ....
بعد فهم هذه الاحداث نتكلم عن الاكواد وتوضيفها
ثم بعد ذلك نمر الى بناء الاكواد .
هذا اذا كانت الدروس موجهة الى صفوف الحضانة مثلي .
تقبلوا ملاحظاتي التي كتبتها في لحظة صدق مع نفسي قبل ان تكون معكم
والسلام عليكم ورحمة الله وبركاته

:abc_022::abc_022:

ثامر أبو بلقيس
30-01-2015, 10:34 AM
أخي فرح :

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

أكتب الأكواد في on show عندما أريد أن تنفذ هذه الأكواد عند
تكوين العناصر في الصفحة أي صارت الصفحة مكتملة و جاهزة للاستعمال
وهذا الكود ينفذ مرة واحدة - لكن لا يمنع عملية تخزين قيم -
-------------------------
أكتب الأكواد في on close عندما أريد أن تنفذ هذه الأكواد بعد
مغادرة الصفحة باتجاه صفحة اخرى كأن تخزن قيمة أو اظهار حوار "رسالة " , حذف ملف , تشغيل
ملف .... الخ
----------------------------------------
أكتب الأكواد في on timer واضح أن كتابة الأكواد هنا
متعلق بالزمن قد تكتب هنا أكواد تتكرر أو تعمل ثم تتوقف في زمن معين
أو توقيفها ثم تشغيلها من جديد .... الخ
-----------
باختصار مع مرور الوقت و كثرة التجارب تصبح بالمنطق تختار الحدث
المناسب لتنفيذ أكواد مشروعك
---- عد إلى قرص دليل المبرمج للاستاذ كريم
اجعل من تلك الشروحات بالذات نقطة بداية لك --- :abc_088: نصيحة كتبتها لك بصدق

ثامر أبو بلقيس
30-01-2015, 12:39 PM
موفق:abc_138:

فرح صالحي
30-01-2015, 01:55 PM
[QUOT
---- عد إلى قرص دليل المبرمج للاستاذ كريم
اجعل من تلك الشروحات بالذات نقطة بداية لك --- :abc_088: نصيحة كتبتها لك بصدق[/QUOTE]

السلام عليكم ورحمة الله وبركاته
سأعمل بنصيحتك أخي ثامر والله ولي التوفيق
شـكــ وبارك الله فيك ـــرا لك .:abc_152:. لك مني أجمل تحية .

عبود عبود
16-02-2016, 11:24 PM
تمت مراجعة التحقق من ظهور صور الشرح بالشكل المناسب ونقل الصور على سيرفر آخر حفاظا على ظهورها بالشكل المناسب


17 \ 2 \ 2016

تحياتى :abc_152:

نجوم ليبيا
20-02-2016, 11:21 AM
السلام عليكم ورحمة الله وبركاته
اشكرك جزيل الشكر و بارك الله فيك اخي الكريم هل يمكن ان ارفع هذا المنشور القيم في موقع آخر؟:abc_028:

عبود عبود
20-02-2016, 09:26 PM
السلام عليكم ورحمة الله وبركاته
اشكرك جزيل الشكر و بارك الله فيك اخي الكريم هل يمكن ان ارفع هذا المنشور القيم في موقع آخر؟:abc_028:

بالطبع يمكن ويمكن مع كافة مواضيعى عندما تجد فيها ما يمكن أن يفيد أكبر عدد ممكن من راغبى التعلم للبرنامج


:abc_152: