• بادئ الموضوع بادئ الموضوع LINEZERO
  • تاريخ البدء تاريخ البدء
  • المشاهدات 113,351
الحالة
مغلق و غير مفتوح للمزيد من الردود.




صامت firefox 4.0.1 المشروع الاولى لتثبيت
وان كان البرنامج مثبت يتم عرض رساله وبها الاصداره المثبته






PHP:
;~ fix one التأكد من وجود ملف التثبيت
    Switch FileExists(@ScriptDir & "\setup.exe")
        case 0
    MsgBox(0+16+524352,"خطأ","ملف تثبيت البرنامج غير موجود")
    exit
    EndSwitch
$prog_path       =  FileExists (@ProgramFilesDir& "\Mozilla Firefox\")
$prog_reg_path   = "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox\4.0.1 (en-US)\Main" ; exe , dir
$progread_in_reg = RegRead($prog_reg_path,"Install Directory")
$prog_reg_v      = "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox"
$progread_in_reg_v = RegRead($prog_reg_v,"CurrentVersion")
if  $prog_path = 1 Or  $progread_in_reg = "C:\\Program Files\\Mozilla Firefox" Then ; البرنامج مثبت بالفعل


Select
    case $prog_path = 0 ; مجلد البرنامج غير موجود
        traytip("silent Firefox 4.0.1","من فضلك انتظر Mozilla Firefox 4.0.1 جارى تثبيت ",1) ;جارى تثبيت البرنامج
        ShellExecuteWait("setup.exe","/S")
        MsgBox(0+48+524352,"تم التثبيت","Mozilla Firefox 4.0.1 تم الانتهاء من تثبيت برنامج")
        exit
    case else ;البرنامج مثبت بالفعل


        If $progread_in_reg_v = "" Then
        $progread_in_reg_v =  "غير معلوم "
    endif

MsgBox(0+64+524352,"البرنامج موجود","مثبت بالفعل Mozilla firefox برنامج"& @CRLF & $progread_in_reg_v &"  رقم النسخه " & @CRLF & "........جارى الخروج")

exit
EndSelect
    else ; البرنامج غير مثبت ولم يتم العثور على شوائب فى الرجسترى
    traytip("silent Firefox 4.0.1","Firefox 4.0. جارى تثبيت من فضلك انتظر",1) ;جارى تثبيت البرنامج
        ShellExecuteWait("setup.exe","/S")
        MsgBox(0+48+524352,"تم التثبيت","Firefox 4.0.1 تم الانتهاء من تثبيت برنامج")
        exit
endif
 

توقيع : himoScript
مثال بسيط عن الحلقات صفحه 46
تعالوا نعد مع بعض :q:

راح تجيلك الجلطه الكبرى لو فكرت تعد :hh:

PHP:
break(0)

$input=""
$in=""
while $input <> 1000000
    $input = InputBox("هههههههه","ها تعالوا نعد من واحد الى 6 وانا راح اساعدك")
    $in=$input+1
    msgbox(0,"",$in)
    if $in = 7 Then
        msgbox(0,"اسف","تعرف تعد لحد مليون ههههههههههههه رحت فيها يااخ")
        endif
wend

 
توقيع : himoScript
نفس دماغى ياعبد الله
بس ياترى دى نفس فكره عمل محرك البحث run
ولا محرك البحث
بيضيفها فى الرجسترى ؟
نعم يا غالي هي هنا

كود:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
 
توقيع : ramay
رامى
برافو عليك فعلا نفس توقعى
ال يتعمق فى الرجسترى يمتلك اسحله فتاكه :hh:

تسلم يغالى ايه اخبارك فى الحلقات طمنى ؟

شفتك فى الصفحات الماضيه بتحارب مع عبارات اللغه الشروط روحك
عاليه جدا وصبور بدرجه غريبه
الله يوفئك
سلام
 
توقيع : himoScript
رامى
برافو عليك فعلا نفس توقعى
ال يتعمق فى الرجسترى يمتلك اسحله فتاكه :hh:

تسلم يغالى ايه اخبارك فى الحلقات طمنى ؟

شفتك فى الصفحات الماضيه بتحارب مع عبارات اللغه الشروط روحك
عاليه جدا وصبور بدرجه غريبه
الله يوفئك
سلام
السلام عليكم ورحمة الله وبركاته

أما عن حلقات أنه صعبه قليل أو عندما سوف تتكتمل دروسه كله ونبدأ في تنفيذ عملي سأفهمه أن شاء الله الافضل
 
توقيع : ramay

الحلقات اللانهائية

الحلقات اللانهائية هي ببساطة وضع شرط لا يمكن كسره ويكون صحيح دائماً ..

راح نشوف الان صيغ لهذه الشروط ..

1) عملية مقارنه ..لايمكن أن تتغير ..

مثل 7<10

هذا الشرط صحيح دائماً .. تذكرون عند وضع شرط عملية مقارنة كنا نضع عدد ثابت ونضع المقارنه

على قيمة متغيرة ..تتغير (بالزيادة أو النقصان أو قيمة راجعه لدالة أو إدخال مستخدم)

هنا لن يحدث أي من ذالك والشرط سيقى على حالة ..

كود:
[COLOR=Blue]while[/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]10[/COLOR] [COLOR=Red]>[/COLOR][COLOR=Indigo] 7[/COLOR][COLOR=Red])[/COLOR]
    [I][COLOR=Navy]msgbox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[COLOR=Red],[/COLOR]"Welcome"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]wend[/COLOR]
2)
الطريقة الثانية هي التحقق هل القيم صحيحة أو خاطئة ..

زي ماقلنا سابقاً إذا وضعت قيمة نصية في مكان الشرط أو قيمة رقيمة ..

فالاتوات يعتبر القيمة النصية "" <<الفارغه false
والقيمة النصية ألي تحتوي ولو على حرف واحد true

وأيضاً بالنسبة للأعداد يعتبر أي عدد صحيح عدا الصفر true

والصفر false

إستخدمت عبارة - يعتبر - ولكن الحقيقة هو يحول القيم لقيم منطقية true -false

سيكون لنا وقفه مع تحويل القيم في الاتوات :d:

نرجع لموضوعنا الان نضع الشرط كنص أي نص ..

كود:
[COLOR=Blue]while[/COLOR][COLOR=Red]([/COLOR][COLOR=Silver]"Waget"[/COLOR][COLOR=Red])[/COLOR]
    [I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[COLOR=Red],[/COLOR]"WELCOME"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]wend[/COLOR]
:d:

مع الاعداد نضع عدد أي عدد عدا 0 وفي الغالب والمتعارف علية هو الواحد
كود:
[COLOR=Blue]while [/COLOR][COLOR=Indigo]1[/COLOR]
    [I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"WELCOME"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]wend[/COLOR]
3) وضع true مكان الشرط

كود:
[COLOR=Blue]while true[/COLOR]
    [I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[COLOR=Red],[/COLOR]"WELCOME"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]wend[/COLOR]
في الغالب نستخدم الطريقتين السابقة :d:

الان كيف أخرج من هذه الحلقات...

ياتي الان دور ExitLoop

الصيغة العامة /
كود:
[COLOR=Blue]ExitLoop [/COLOR][COLOR=Silver][level][/COLOR]
level : مستوى الخروج :wink:

الافتراضي 1 ويعني الحلقة الحالية
تستخدم مع الشرط ..

تمكنا مثلا من الخروج من الحلقات اللانهائية أو وضع شرط آخر داخل الحلقة :)

تفيدنا في تلافي أخطاء قاتلة في السيكريبت ..

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

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

التي تستوجب صحة العملية السابقة :u:

قد تكون لدينا حلوول آخرى لكن الخروج يبقى أحدها :d:

^
بعد الفلسفة ألي فوق نشوف بعض الامثلة :)
كود:
[COLOR=DarkRed]$caunt[/COLOR][COLOR=Red]=[/COLOR] [COLOR=Indigo]0[/COLOR]
[COLOR=Blue]while true[/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Silver][COLOR=Red],[/COLOR]""[COLOR=Red],[/COLOR]"WELCOME"[/COLOR][COLOR=Red])[/COLOR]
 [COLOR=DarkRed]   $caunt = $caunt[/COLOR][COLOR=Red] +[/COLOR] [COLOR=Indigo]1[/COLOR]
   [COLOR=Blue] if[/COLOR][COLOR=DarkRed] $caunt[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]10 [/COLOR][COLOR=Blue]Then[/COLOR]
        [COLOR=Blue]ExitLoop[/COLOR]
    [COLOR=Blue]endif[/COLOR]
[COLOR=Blue]wend[/COLOR]
أعتقد واضح :d:
كود:
[COLOR=Blue]while[/COLOR][COLOR=Red]([/COLOR][I][COLOR=Navy]ProcessExists[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Silver]"IDMan.exe"[/COLOR][COLOR=Red]))[/COLOR]
    
[COLOR=DarkRed]    $close [/COLOR][COLOR=Red]=[/COLOR] [I][COLOR=Navy]ProcessClose[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Silver]"IDMan.exe"[/COLOR][COLOR=Red]) [/COLOR]
  [COLOR=Blue]  if[/COLOR][COLOR=DarkRed] $close[/COLOR] [COLOR=Red]<>[/COLOR] [COLOR=Indigo]1[/COLOR] [COLOR=Blue]Then[/COLOR]
        [COLOR=Blue]ExitLoop[/COLOR]

    [COLOR=Blue]endif[/COLOR]

    [COLOR=Navy][I]FileDelete[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Magenta]@ProgramFilesDir[/COLOR] [COLOR=Red]&[/COLOR] [COLOR=Silver]"\Internet Download Manager\IDMan.exe"[/COLOR][COLOR=Red])[/COLOR]
    
[COLOR=Blue]wend[/COLOR]
هنا شرط الدخول للحلقة هو وجود العملية IDman

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

لو وضعنا ContinueLoop

لن يتم الخروج من الحلقه حتى يستطيع إغلاق البرنامج :d:

نأتي الان للحلقات المتداخله و lavel

كود:
[COLOR=DarkRed]$caunt [/COLOR][COLOR=Red]= [/COLOR][COLOR=Indigo]0[/COLOR]
[COLOR=Blue]while [/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$caunt[/COLOR][COLOR=Red] <[/COLOR] [COLOR=Indigo]20[/COLOR][COLOR=Red])[/COLOR]

    [COLOR=Blue]while[/COLOR][COLOR=Red]([/COLOR][COLOR=Blue]true[/COLOR][COLOR=Red])[/COLOR]
        [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"B"[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$caunt[/COLOR][COLOR=Red])[/COLOR]
       [COLOR=DarkRed] $caunt [/COLOR][COLOR=Red]+=[/COLOR][COLOR=Indigo]1[/COLOR]
       [COLOR=Blue] if[/COLOR] [COLOR=DarkRed]$caunt[/COLOR] [COLOR=Red]=[/COLOR] 10 [COLOR=Blue]Then[/COLOR]
            [COLOR=Blue]Exitloop[/COLOR]
        [COLOR=Blue]endif[/COLOR]
    [COLOR=Blue]wend[/COLOR][COLOR=YellowGreen];==>End B
[/COLOR] 

    [COLOR=Blue]while[/COLOR]([COLOR=DarkRed]$caunt [/COLOR][COLOR=Red]<[/COLOR][COLOR=Indigo] 20[/COLOR])
        [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"C"[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$caunt[/COLOR][COLOR=Red])[/COLOR]

      [COLOR=DarkRed]  $caunt[/COLOR] [COLOR=Red]+=[/COLOR][COLOR=Indigo]1[/COLOR]

    [COLOR=Blue]wend [/COLOR][COLOR=YellowGreen];==> End C[/COLOR]

[COLOR=Blue]wend [/COLOR][COLOR=YellowGreen];==>End A[/COLOR]
لدينا هنا ثلاث حلقات ..
الحلقة A راح نقول إنها الحلقة الام

بداخلها حلقتين B ,C

نشوف أول شيء الlavel هو الان 1

أين سيتم الخروج ؟؟

سيتم الخروج إلى الحلقة A وإكمال باقي الاوامر

هنا مافي غير الحلقه الثانية C يتم إختبار شرطها والدخول لها

طيب لو غيرنا الlavel ؟؟
إلى 2 أين راح يتم الخروج

راح يتم الخروج من الحلقة A وبالتالي لن يتم الدخول للحلقة C

:d:
 
توقيع : waget
كود:
$1 = 0 ; متغير 1
$2 = 16  ; متغير2
$msg ="";  ؟؟؟
While($1 < 9) ; هنا أنا كان متغير 1 أضغر من شرط أدخل
 $msg &= $1 &"" ; ؟؟
 While($2 > 15);   أن كان متغير 2 أكبر من شرط أدخل شرط
  $msg &= $2 &"";  ؟؟
 MsgBox(0,"",$msg);  هنا لي أظهار مسج  أن تحقق شرط
 $2 = $2 + 1;  هنا يزيد واحد في كل مر ه
WEnd;  خروج
$msg &= @CRLF;  لأنزل سطر في مسج
$1 = $1 + 1; يزيد واحد في كل مره
$2 = 1; ؟؟؟؟ 
WEnd;  خروج
; هذه الذي فهمت من درس 
; التى عليه أشارة ? لم أفهم لماذا موضعه

كود:
$1 = 0 ; متغير 1
$2 = 16  ; متغير2
$msg ="";  ؟؟؟
While($1 < 9) ; هنا أنا كان متغير 1 أضغر من شرط أدخل
 $msg &= $1 &"" ; ؟؟
 While($2 > 15);   أن كان متغير 2 أكبر من شرط أدخل شرط
  $msg & =  $2 &" " ;  إضافه القيمة الجديدة للمتغير بجانب القيم السابقة
  ;مع إضافه مسافة بينها
  ;$msg = $msg & $2 & "" <== يماثل هذا
 MsgBox(0,"",$msg);  هنا لي أظهار مسج  أن تحقق شرط
 $2 = $2 + 1;  هنا يزيد واحد في كل مر ه
WEnd;  خروج
[COLOR=Red]$msg &= @CRLF ; هنا إضافه سطر جديد مع وجود القيم السابقة لإضهارها في المسج[/COLOR]
[COLOR=Red] + 1; ي$1 = $1زيد واحد في كل مره[/COLOR]
[COLOR=Red]$2 = 1 ; في مثالك ماله هدف :)[/COLOR]
[COLOR=Red]; في المثال ألي وضعته أنا الهدف منه إعادة قيمة المتغير ل1 ليبدأ من جديد في الحلقة التالية[/COLOR]
WEnd;  خروج

:d: تجربتك هذي مثال على الحلقات اللانهائية لأنك واضع المتغير أكبر من 15من الاساس

بالنسبة للي بالاحمر لن يتنفذ لأنه لن يخرج من الحلقة الثانية :)

إقرأ الملاحظات :)

شوف الاامثلة ألي وضعتها أنا ووضعها الاستاذ بندر و إلعب فيها إحذف أضيف وشوف النتيجة

^_^
 
توقيع : waget
مثال بسيط عن الحلقات صفحه 46
تعالوا نعد مع بعض :q:

راح تجيلك الجلطه الكبرى لو فكرت تعد :hh:

PHP:
break(0)

$input=""
$in=""
while $input <> 1000000
    $input = InputBox("هههههههه","ها تعالوا نعد من واحد الى 6 وانا راح اساعدك")
    $in=$input+1
    msgbox(0,"",$in)
    if $in = 7 Then
        msgbox(0,"اسف","تعرف تعد لحد مليون ههههههههههههه رحت فيها يااخ")
        endif
wend

^
:eek:

حاتم & إبراهيم :ok:

إطلعت على الامثلة ماشاء الله مايحتاج

حتوم حبيت لو إنك لعبت في التطبيق شوي ..

أعذروني على ردي المتأخر << قعد يعد لمليوون :hh:
 
توقيع : waget
توقيع : waget
[5]الحلقات..العبارة Do


[5]الحلقات..العبارة Do

العبارة do مشابهه جداُ لwhile

ينطبق عليها جميع ماسبق من دروس الحلقات

يوجد إخلاف بينها وبين while وسنوضحه وهذي العبارة هي الاقل إستدخدام :d:

الصيغه العامة /

كود:
[COLOR=Blue]Do[/COLOR]
   [COLOR=Silver] statements
    ...[/COLOR]
[COLOR=Blue]Until [/COLOR][COLOR=Silver]<expression>[/COLOR]
نلاحظ هنا أن الشرط يكتب في آخر العبارة بعد كلمةUntil

ومنه نستنتج أن الشرط يختبر بعد إتمام كل الحلقة وليس قبل الدخول لها ..

نقدر نسوغ هذي الطريقة بإختبار الخروج من الحلقة

وفي while نقدر نقول إختبار الدخول للحلقة

المميز في do هو إنك تضمن تنفيذ ماف داخل جسم العبارة ولو مره واحده على الاقل :d:

والسبب هو إن الاختبار زي ماقلنا فوق يحدث في آخر كل لفه عكس while

وعند كتابة الشرط يجب أن تراعي شيء :)

في while حنا نضع الشرط لكي تستمر الحلقة

هنا نضع الشرط علشان الخروج يعني علشان تستمر الحلقة يجب أن يكون ناتج التحقق من الشرط

false إذا أصبح true يخرج من الحلقة

أعيد وأقول الشرط الي نضعه هو شرط للخروج :smile:



كود:
[COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Navy]5[/COLOR]
[COLOR=DarkRed]$var2 [/COLOR][COLOR=Red]=[/COLOR] [COLOR=Navy]6[/COLOR]
[COLOR=Blue]do[/COLOR]
    [COLOR=DarkRed]$var2[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=DarkRed]$var2[/COLOR] [COLOR=Red]+[/COLOR] [COLOR=Navy]1[/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Navy]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$var2[/COLOR][COLOR=Red])[/COLOR]

[COLOR=Blue]Until [/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]<[/COLOR] [COLOR=DarkRed]$var2[/COLOR][COLOR=Red])[/COLOR]
الشرط يقول إذا المتغير الاول أصغر من الثاني

أخرج من الحلقة وفي داخل الحلقة راح يزيد المتغير الثاني ب1

طبعا لو نشوف قيم المتغيرات نلاحظ إن الاول أصغر من الثاني ..

ونلاحظ لما نجرب السيكريبت إنه تمت زيادة المتغير الثاني ب1

فهذا يدل إنه راح يدخل جسم الحلقة وينفذها ثم يختبر الشرط :d:

حتى لو تحقق الشرط :)

أقصد باتحقق الشرط هو أن يصبح true

وهذا يعني الخروج
:d::d:

الان نقدر نكتب حلقة متداخله بإستخدام do
كود:
[COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Navy]1[/COLOR]
[COLOR=DarkRed]$var2[/COLOR][COLOR=Red] =[/COLOR] [COLOR=Navy]0[/COLOR]
[COLOR=DarkRed]$result [/COLOR][COLOR=Navy][COLOR=Red]=[/COLOR] [/COLOR][COLOR=Silver]""[/COLOR]
[COLOR=Blue]Do[/COLOR]
   [COLOR=DarkRed] $result  [COLOR=Red]=[/COLOR] $result [COLOR=Red]&[/COLOR] $var1[/COLOR]
[COLOR=DarkRed]  [COLOR=Blue]  Do[/COLOR]
        $var2 [COLOR=Red]=[/COLOR] $var2[/COLOR] [COLOR=Red]+[/COLOR][COLOR=Navy] 1[/COLOR]
       [COLOR=DarkRed] $result [COLOR=Red]=[/COLOR]  $result [COLOR=Red]&[/COLOR] [COLOR=Silver]"  "[/COLOR] [COLOR=Red]&[/COLOR] $var2[/COLOR]
        [COLOR=Indigo][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Navy]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=DarkRed][COLOR=Red],[/COLOR]$result[/COLOR] [COLOR=Red])[/COLOR]

    [COLOR=Blue]Until [/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$var2 [/COLOR][COLOR=Red]> [/COLOR][COLOR=Navy]9[/COLOR][COLOR=Red])[/COLOR]
  [COLOR=DarkRed]  $var2[/COLOR] [COLOR=Red]= [/COLOR][COLOR=Navy]0[/COLOR]
[COLOR=DarkRed]    $var1 [COLOR=Red]=[/COLOR] $var1 [/COLOR][COLOR=Red]+[/COLOR] [COLOR=Navy]1[/COLOR]
  [COLOR=DarkRed]  $result  [COLOR=Red]=[/COLOR] $result[/COLOR] [COLOR=Red]&[/COLOR] [COLOR=Magenta]@crlf[/COLOR]
[COLOR=Blue]Until [/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]>[/COLOR] [COLOR=Navy]9[/COLOR][COLOR=Red])[/COLOR]
مافي شيء جديد غير الشرط:d:

في الحلقة الام إذا المتغير الاول أصبح أكبر من 9 أخرج من الحلقة

نفس الكلام مع المتغير الثاني :)

إستخدام Exit Loop

مافي شيء جديد أقدر أقوله

وهذا مثال عليها :d:
كود:
[COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]= [/COLOR][COLOR=Navy]1[/COLOR]
[COLOR=DarkRed]$result [/COLOR][COLOR=Red]=[/COLOR] [COLOR=Silver]""[/COLOR]
[COLOR=Blue]Do[/COLOR]
 [COLOR=DarkRed]   $result[/COLOR]  [COLOR=Red]=[/COLOR] [COLOR=DarkRed]$result [COLOR=Red]& [/COLOR]$var1[/COLOR]
    [COLOR=Indigo][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Navy]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$result[/COLOR][COLOR=Red])[/COLOR]
[INDENT]     [COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]=[/COLOR][COLOR=DarkRed] $var1[/COLOR] [COLOR=Red]+[/COLOR] [COLOR=Navy]1[/COLOR]
[/INDENT]     [COLOR=Blue]if[/COLOR] [COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Navy]5[/COLOR] [COLOR=Blue]Then[/COLOR]
        [COLOR=Blue]exitloop[/COLOR]
    [COLOR=Blue]endif[/COLOR]
   [COLOR=DarkRed] $result  [COLOR=Red]=[/COLOR] $result[/COLOR] [COLOR=Red]&[/COLOR] [COLOR=Magenta]@crlf[/COLOR]
[COLOR=Blue]Until [/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]>[/COLOR] [COLOR=Navy]9[/COLOR][COLOR=Red])[/COLOR]
بالنسبة لlavel نفس الفكره

لأن Exit Loop و ContinueLoop تستخدم مع جميع العبارات

إستخدام ContinueLoop

:wink:

كود:
[COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]0[/COLOR]
[COLOR=DarkRed]$result[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Silver]""[/COLOR]
[COLOR=Blue]Do[/COLOR]
[COLOR=DarkRed]
    $var1 = $var1[/COLOR] [COLOR=Red]+[/COLOR] [COLOR=Indigo]1[/COLOR]
    [COLOR=Blue]if[/COLOR] [COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]5[/COLOR] [COLOR=Blue]Then[/COLOR]
        [COLOR=Blue]continueloop[/COLOR]
    [COLOR=Blue]endif[/COLOR]
 [COLOR=DarkRed]   $result  [COLOR=Red]=[/COLOR] $result [COLOR=Red]&[/COLOR] $var1 [/COLOR][COLOR=Red]&[/COLOR] [COLOR=Magenta]@crlf[/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=DarkRed][COLOR=Red],[/COLOR]$result[/COLOR][COLOR=Red])[/COLOR]

[COLOR=Blue]Until [/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]>[/COLOR] [COLOR=Indigo]9[/COLOR][COLOR=Red])[/COLOR]
ونفس الكلام ينطبق على lavel هنا مافي شيء جديد :d:

الحلقات اللا نهائية في do

حنا نعرف إن اللي يخلي الحلقة غير نهائية هو الشرط

والان نعرف إن do الامر فيها مختلف بالنسبة للشرط

لذا لوضع حلقة نهائية في do

نضع شرط دائما خاطئ false أو تحول قيمته ل false

أمثلة على هذه الشروط

عند وضع "" << نص فارغ في مكان الشرط

كود:
[COLOR=Blue]Until [/COLOR][COLOR=Red]([COLOR=Silver]""[/COLOR])[/COLOR]
عند وضع 0 مكان الشرط
كود:
[COLOR=Blue]Until[COLOR=Red] [/COLOR][/COLOR][COLOR=Red]([COLOR=Indigo]0[/COLOR])[/COLOR]
عند وضع false مكان الشرط

كود:
 [COLOR=Blue]Until [COLOR=Red]([/COLOR]false[COLOR=Red])[/COLOR][/COLOR]
عند وضع عملية مقارنه خاطئة دائماً

كود:
 [COLOR=Blue]Until[/COLOR][COLOR=Red][COLOR=Blue] [/COLOR]([/COLOR][COLOR=Indigo]1[/COLOR][COLOR=Red]>[/COLOR] [COLOR=Indigo]10[/COLOR][COLOR=Red])[/COLOR]
:d:
كود:
[COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]0[/COLOR]
[COLOR=DarkRed]$result[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Silver]""[/COLOR]
[COLOR=Blue]Do[/COLOR]

[COLOR=DarkRed]    $var1 [COLOR=Red]=[/COLOR] $var1[/COLOR] [COLOR=Red]+[/COLOR] [COLOR=Indigo]1[/COLOR]
   [COLOR=Blue] if[/COLOR][COLOR=DarkRed] $var1[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]15[/COLOR] [COLOR=Blue]Then[/COLOR]
        [COLOR=Blue]exitloop
    endif[/COLOR]
   [COLOR=DarkRed] $result  [COLOR=Red]=[/COLOR] $result [COLOR=Red]&[/COLOR] $var1[/COLOR] [COLOR=Red]&[/COLOR] [COLOR=Magenta]@crlf[/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$result[/COLOR][COLOR=Red])[/COLOR]

[COLOR=Blue]Until false[/COLOR]

وصلى الله وسلم على نبينا محمد وعلى آله وصحبه وسلم


 
توقيع : waget
[6]الحلقات..العبارة for

[6]الحلقات..العبارة for

العبارة for تعتبر أسهل عبارة وتعتبر أيضاُ عباره مهمه خاصه مع المصفوفات

وهي نوعين نوع راح نأخذه الان ونوع قد نأخذه بعد المصفوفات :d:

النوع الاول يتعامل مع الاعداد
الصيغه العامه ...

كود:
[COLOR=Blue]For[/COLOR] [COLOR=Silver]<variable>[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Silver]<start> [/COLOR][COLOR=Blue]To [/COLOR][COLOR=Silver]<stop>[/COLOR] [COLOR=Red][[/COLOR][COLOR=Blue]Step [/COLOR][COLOR=Silver]<stepval>[/COLOR][COLOR=Red]][/COLOR]
   [COLOR=Silver] statements
    ...[/COLOR]
[COLOR=Blue]Next[/COLOR]
طويله شوي لكن سهله بالنسبه مابين الاقواس إختياري وسوف نوضحه :)

تبدأ بالكلمة المحجوزة for

ثم تعرف متغير وتضع له قيمة إبتدائية

ثم تستخدم الكلمة To
وتضع القيمة النهائية الي تريد أن تنتهي بها الحلقة

إذا أردت تحديد مقدار الزيادة أو النقصان إستخدم Step
وضع بعده مقدار الزيادة أو النقصان الافتراضي 1

ثم تنتهي بالكلمة next
نجي للأمثلة الان
كود:
[COLOR=Blue]For[/COLOR] [COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]= [/COLOR][COLOR=Indigo]0[/COLOR] [COLOR=Blue]to[/COLOR] [COLOR=Indigo]10 [/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$var1[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]Next[/COLOR]
عرفنا متغير زي ما إتفقنا ووضعنا القيمة الابتدائية 0 وتنتهي بالقيمة النهائية 10

لم نضع step لأن الافتراضي 1 ونحن نريد الزيادة بواحد

:d::d:

نريد الزيادة ب 3

كود:
[COLOR=Blue]For [/COLOR][COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]0[/COLOR][COLOR=Blue] to[/COLOR] [COLOR=Indigo]10[/COLOR]  [COLOR=Blue]step [/COLOR][COLOR=Indigo]3[/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$var1[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]Next[/COLOR]
نريد أن نعد ولكن بالعكس من 10 إلى 0

كود:
[COLOR=Blue]For [/COLOR][COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]10[/COLOR] [COLOR=Blue]to[/COLOR] [COLOR=Indigo]0 [/COLOR] [COLOR=Blue]step [/COLOR][COLOR=Red]-[/COLOR][COLOR=Indigo]1[/COLOR][INDENT][INDENT][INDENT]    [I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$var1[/COLOR][COLOR=Red])[/COLOR]
[/INDENT][/INDENT][/INDENT][COLOR=Blue]Next[/COLOR]
حلقتين متداخلة :d:

كود:
[COLOR=DarkRed]$result [/COLOR][COLOR=Red]=[/COLOR][COLOR=Silver] ""[/COLOR]
[COLOR=Blue]For [/COLOR][COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]1[/COLOR][COLOR=Blue] to[/COLOR] [COLOR=Indigo]10[/COLOR]
  [COLOR=DarkRed]  $result[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=DarkRed]$result [/COLOR][COLOR=Red]&[/COLOR][COLOR=DarkRed] $var1[/COLOR] [COLOR=Red]&[/COLOR] [COLOR=Silver]" "[/COLOR]
    [COLOR=Blue]For [/COLOR][COLOR=DarkRed]$var2[/COLOR] [COLOR=Red]=[/COLOR][COLOR=Indigo] 1[/COLOR] [COLOR=Blue]to[/COLOR][COLOR=Indigo] 10[/COLOR]
        [COLOR=DarkRed]$result[/COLOR][COLOR=Red] =[/COLOR] [COLOR=DarkRed]$result[/COLOR] [COLOR=Red]&[/COLOR][COLOR=DarkRed] $var2[/COLOR]
        [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$result[/COLOR][COLOR=Red])[/COLOR]
    [COLOR=Blue]next[/COLOR]
   [COLOR=DarkRed] $result[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=DarkRed]$result[/COLOR]  [COLOR=Red]&[/COLOR] [COLOR=Magenta]@crlf[/COLOR]
[COLOR=Blue]Next[/COLOR]
إستخدام continueloop
ما في شيء جديد :d:
كود:
[COLOR=DarkRed]$result [/COLOR][COLOR=Red]=[/COLOR] [COLOR=Silver]""[/COLOR]
[COLOR=Blue]For[/COLOR][COLOR=DarkRed]$var1 [/COLOR][COLOR=Red]= [/COLOR][COLOR=Indigo]1[/COLOR] [COLOR=Blue]to[/COLOR] [COLOR=Indigo]10[/COLOR]
  [COLOR=Blue]  if[/COLOR] [COLOR=DarkRed]$var1 [/COLOR][COLOR=Red]=[/COLOR] [COLOR=Indigo]5[/COLOR] [COLOR=Blue]Then[/COLOR]
        [COLOR=Blue]continueloop[/COLOR]
    [COLOR=Blue]endif[/COLOR]
[COLOR=DarkRed]    $result [/COLOR][COLOR=Red]=[/COLOR] [COLOR=DarkRed]$result [/COLOR][COLOR=Red]&[/COLOR] [COLOR=DarkRed]$var1[/COLOR] [COLOR=Red]&[/COLOR] [COLOR=Silver]" "[/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$result[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]Next[/COLOR]
إستخدام exitloop

أيضاً لاجديد

كود:
[COLOR=DarkRed]$result [/COLOR][COLOR=Red]=[/COLOR] [COLOR=Silver]""[/COLOR]
[COLOR=Blue]For[/COLOR][COLOR=DarkRed] $var1[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]1[/COLOR][COLOR=Blue] to [/COLOR][COLOR=Indigo]10[/COLOR]
  [COLOR=Blue]  if[/COLOR][COLOR=DarkRed]$var1 [/COLOR][COLOR=Red]=[/COLOR] [COLOR=Indigo]5[/COLOR] [COLOR=Blue]Then[/COLOR]
        [COLOR=Blue]exitloop[/COLOR]
    [COLOR=Blue]endif[/COLOR]
   [COLOR=DarkRed] $result [/COLOR][COLOR=Red]=[/COLOR] [COLOR=DarkRed]$result [/COLOR][COLOR=Red]&[/COLOR][COLOR=DarkRed] $var1[/COLOR] [COLOR=Red]&[/COLOR] [COLOR=Silver]" "[/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR]([COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$result[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]Next[/COLOR]
 
توقيع : waget
استاذي عبدالله

ازادك الله من علمه ؛؛؛ ماندري كيف نرد جمايلك علينا

بالتوفيق والى الاااامام <<< شوي واقول زنقه زنقه :d:​
 
توقيع : LINEZERO
استاذي عبدالله

ازادك الله من علمه ؛؛؛ ماندري كيف نرد جمايلك علينا

بالتوفيق والى الاااامام <<< شوي واقول زنقه زنقه :d:

:b::b:تراني بديت أنتفخ وأصدق إني أستاذ :d:

جميلك سابق أخوي ~ لا تحرمنا طلتك :smile:

:king::king:
 
توقيع : waget
الماكرو Error And Extended



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

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

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

تفسر على إنها صحيحة أو خاطئة ...

في السابق عند حدوث خطأ عندنا حلين إما الخروج من البرنامج أو إخبار المستخدم

بوجود خطأ مع عدم معرفه ماهيه هذا الخطأ

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

الطريقة اللي راح نتعالمها الايوم لاتعمل على كل الدوال
بل دوال محدده .. أخذنا بعضها وبنرجعها الان

طيب يأتي سائل يقول .. الطريقة هذي لبعض الدوال ماذا أفعل في البقية
الطريقة هذي وضعت في دوال يكون أسباب فشل عملها متعدد
عكس بعض الدوال مثل fileCopy فهي لاتخطئ إلا إذا كان الملف غير موجود

بعد هذي المقدمة أعتقد إنك إقتنعت بأهمية هذي الطريقة !!

بالنسبة لإصلاح الخطأ بعد معرفته ومعرفه إمكانية الحل فهنا بكل تأكيد سنستخدم اللوب

^
هذا سبب تأجيلي شرح هذا الموضوع :d:

الماكرو error

كود:
@error
تكون قيمة الماكرو 0 إذا تم عمل الدالة بشكل صحيح

تكون قيمته غير الصفر إذا فشلت الدالة ولكل قيمة تفسير معين

حسب الخطأ ونأخذه من الكتاب المساعد :)

مثل /

الدالة RunWait تذكرون لما أخذنها قلت هذي الدالة مانقدر نعرف هل أتمت عملها بشكل صحيح
أو لا بسبب إن القيمة الراجعه لها في حالة الصحه أحيناُ <بل غالباً تساوي 0 وعند الفشل تساوي 0
فهنا كيف أعرف إن الدالة أتمت عملها :d:

نروح للكتاب المساعد ونشوف

7e3b310a20515dc59820e9b821fa2881.png


بمعنى إنه في حالة الخطأ سوف تعين قيمة للماكرو وهي لا تسوي الصفر :)

كود:
while 1
RunWait(@scriptdir & "\run.exe")
if(@error)Then
    $msg = MsgBox(5 + 16 ,"Error","في هذا المسار  run.exe تأكد أن الملف" & @crlf & _
    @scriptdir & "\run.exe")
    if $msg = 4 Then
        ContinueLoop
    Else
        exitloop
    endif
Else
    exitloop
endif
wend
وضعنا حلقة لا نهائية يتم الخروج منها فقط إذا تم تشغيل الملف بنجاح ..

كيف ذالك ؟؟

وضعنا الماكرو في الشرط ويمكننا أيضا حفظ قيمته والتحقق منها بالطريقة الاعتيادية

الماكرو إذا ساوت قيمته غير الصفر تفسر القيمة على إنها true

بمعنى الشرط تحقق والملف لم يتم تشغيله ..

تظهر رسالة للمستخدم يتأكد من وجود الملف وبعدها يعيد المحاولة

ولاحظ أعدنا اللوب هنا ليتم تنفيذ الدالة مره آخرى والتحقق مره أخرى

أو يخرج من السيكريبت :d: والخروج من الحلقة إما بتشغيل الملف بشكل صحيح أو الخروج من قبل المستخدم وكلها بإستخدام ExitLoop
نفس الفكرة مع دالة ShellExecuteWait

ملاحظة مهمة /

الان لو عندنا دالتين مثلاً تشغيل برنامجين /
كود:
ShellExecuteWait ("prog1.exe") 
ShellExecuteWait ("prog2.exe")
الان الماكرو error يخص أي دالة :)

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

الماكرو Extended

كود:
@extended
نادر الاستخدام في الغالب يأتي إذا نجحت الدالة يوفر معلومات إضافية

إن شاء الله الدرس القادم بيكون في مثال عليها

:d:
 
توقيع : waget

تلبية لإقتراح الاخ بندر الذي كان حريص من بدء الدورة

أن تصل الفائدة للجميع و بسبب قلة التفاعل
من الاعضاء المشاركين وأهمية الدروس القادمة

تمت إعادة فتح الموضوع مره أخرى

والرجاء الاطلاع على الشروط في أول الموضوع

أي إستفسار خارج محتوى الدورة ضعه
يجب عليك تسجيل الدخول او تسجيل لمشاهدة الرابط المخفي


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


جزيل الشكر للأخوان بندر ونور MAAX

وفق الله الجميع لما يحبه ويرضاه

:king:
 
توقيع : waget
عساك على القوووه :d:
 
توقيع : LINEZERO
التعامل مع الملفات Read And Write

إن شاء الله اليوم راح نأخذ مجموعة من الدوال للتعامل مع الملفات

نبدأ مع قرأة الملفات

FileRead


الصيغة العامة :
كود:
[COLOR=Navy][I]FileRead [/I][/COLOR][COLOR=Red]([/COLOR] [COLOR=Silver]"filehandle/filename"[/COLOR][COLOR=Red] [,[/COLOR] count[COLOR=Red]] )[/COLOR]
filehandle/filename:

filename: إسم الملف ومساره
أو
filehandle: مقبض أو مؤشر الملف في الذاكرة راح نفصله في الجزء الثاني للدرس ..

count /عدد الحروف الي تريد قرأتها من الملف

الافتراضي .. جميع الاحرف في الملف

القيم الراجعه للدالة /

في حالة النجاح : ترجع جميع بيانات الملف سواء كانت نص / binary
وأيضاًُ يحمل الماكرو extended@ عدد الاحرف في الملف / عدد البايتات

حالة خاصة : في حالة قرأه الملف إلى الاخير يحمل error@ القيمة -1

في حالة الخطأ : يحمل الماكرو Error@ القيمة 1 /والخطأ يعني الملف غير قابل للقرأه - أو ليس في وضع
القرأه


مثال (1)

كود:
[COLOR=DarkRed]$text[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Navy][I]FileRead[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver]"1.txt"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]if[/COLOR] [COLOR=Magenta]@error[/COLOR] [COLOR=Red]=[/COLOR] 1 [COLOR=Blue]then[/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]16[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"لايمكن فتح الملف للقرأه"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]Else[/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$text [/COLOR][COLOR=Red]&[/COLOR] [COLOR=Magenta]@crlf[/COLOR] [COLOR=Red]&[/COLOR][COLOR=Silver] "عدد الاحرف :" [/COLOR][COLOR=Red]&[/COLOR] [COLOR=Magenta]@extended[/COLOR] [COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
في الملف 1.txt كتبنا نص بسيط فمن غير الممكن إستخدام msgbox
للملفات الكبيرة الهدف هو إيضاح الفكرة

زي ماشفنا القيمة الراجعه للدالة هي النص الموجود في الملف وهذا يعني

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

سوف نستخدم الدالة StringInStr

مثال (2)

كود:
[COLOR=DarkRed]$path[/COLOR] = [COLOR=Magenta]@SystemDir[/COLOR] [COLOR=Red]&[/COLOR][COLOR=Silver]"\drivers\etc\hosts"[/COLOR]
[COLOR=DarkRed]$text[/COLOR] [COLOR=Red]=[/COLOR]  [I][COLOR=Navy]Fileread[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=DarkRed]$path[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]if[/COLOR] [COLOR=Magenta]@error[/COLOR] [COLOR=Red]=[/COLOR] 1 [COLOR=Blue]Then[/COLOR]
    [I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]16[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"لايكمن فتح الملف للقرأة"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]Else[/COLOR]
    [COLOR=DarkRed]$sarch[/COLOR] [COLOR=Red]= [/COLOR][COLOR=Navy][I]StringInStr[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$text[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"www.zyzoom.org/vb"[/COLOR][COLOR=Red])[/COLOR]
    [COLOR=Blue]if[/COLOR] [COLOR=DarkRed]$sarch[/COLOR][COLOR=Red] <>[/COLOR] 0 [COLOR=Blue]then[/COLOR]
        [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]16[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"الموقع محجوب"[/COLOR][COLOR=Red])[/COLOR]
    [COLOR=Blue]Else[/COLOR]
        [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[COLOR=Red],[/COLOR]"الموقع ليس محجوب لديك"[/COLOR][COLOR=Red])[/COLOR]
    [COLOR=Blue]endif[/COLOR]

[COLOR=Blue]endif[/COLOR]
التحقق هل منتدى زيزووم محجوب من ملف الهوست :)



FileReadLine

هي تقرأء سطر واحد في الملف تحدد /عند عدم التحديد يقرأ السطر الاول
الصيغة العامة للدالة
كود:
[COLOR=Navy][I]FileReadLine[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver] "filehandle/filename"[/COLOR][COLOR=Red] [,[/COLOR] line[COLOR=Red]] )[/COLOR]
filename: إسم الملف ومساره
أو
filehandle: مقبض أو مؤشر الملف في الذاكرة ..

line :
رقم السطر المراد قرأته يبدء العد من 1
ولقرأه أخر سطر بالتحديد ضع -1

القيم الراجعه

في حالة النجاح : ترجع الدالة بالسطر

حالة خاصة : عند قرأة السطر الاخير أي وضعت -1 في الوسيطات الماكرو error@ يحمل القيمة -1

في حالة الفشل :يحمل الماكرو error@ 1 /والخطأ يعني الملف غير قابل للقرأة - أو ليس في وضع القرأة

مثال

كود:
[COLOR=DarkRed]$line[/COLOR][COLOR=Red]=[/COLOR] [COLOR=Navy][I]FileReadLine [/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver] "1.txt"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]if[/COLOR] [COLOR=Magenta]@error[/COLOR] [COLOR=Red]<>[/COLOR] [COLOR=Indigo]1[/COLOR] [COLOR=Blue]then[/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=DarkRed][COLOR=Red],[/COLOR]$line[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]

FileWrite

الدالة هذي تقوم بكتابة نص في ملف ... إذا لم يكن الملف موجود سيتم إنشائه

إذاكان موجود يتم الكتابة بعد آخر حرف في الملف

كود:
[COLOR=Navy][I]FileWrite[/I][/COLOR][COLOR=Red]([/COLOR] [COLOR=Silver]"filehandle/filename"[/COLOR][COLOR=Red],[/COLOR] [COLOR=Silver]"text/data"[/COLOR] [COLOR=Red])[/COLOR]
filehandle/filename :

filename: إسم الملف ومساره
أو
filehandle: مقبض أو مؤشر الملف في الذاكرة ..

text/data : البيانات المراد إضافتها سواء كانت نص / Binary

القيمة الراجعه للدالة :

في حالة النجاح : 1

في حالة الفشل : 0 / يعني الملف غير قابل للكتابة - أو ليس في وضع الكتابة .

مثال

كود:
[COLOR=Blue]if[/COLOR] [COLOR=Navy][I]FileWrite[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver]"2.txt"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Welcome"[/COLOR][COLOR=Red])[/COLOR] [COLOR=Blue]Then[/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR],[COLOR=Silver]""[/COLOR],[COLOR=Silver]"تمت إضافة النص للملف"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
FileWriteLine

الصيغة العامة :

كود:
[COLOR=Navy][I]FileWriteLine [/I][/COLOR][COLOR=Red]([/COLOR] [COLOR=Silver]"filehandle/filename"[/COLOR][COLOR=Red],[/COLOR] [COLOR=Silver]"line"[/COLOR] [COLOR=Red])[/COLOR]
line : السطر المراد كتابته في الملف.

شبية جدأ بالدالة السابقة - ونفس القيم والراجعه

بالنسبة للفروق .. الفرق هنا إن الدالة بعد كتابة النص تنزل سطر في الملف

أي تضيف crlf@ بعد النص بشكل تلقائي ..

مع الامثلة بتوضح الفروق أكثر ..

نستخدم الدالة الاولى ..

كود:
[COLOR=DarkRed]$file[/COLOR][COLOR=Red] =[/COLOR] [COLOR=Silver]"test.txt"[/COLOR]
[COLOR=Navy][I]FileWrite[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$file[/COLOR][COLOR=Red] ,[/COLOR] [COLOR=Silver]"Waget "[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Navy][I]FileWrite[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$file[/COLOR] [COLOR=Red],[/COLOR] [COLOR=Silver]"zyzoom.org"[/COLOR][COLOR=Red])[/COLOR]
لو فتحنا الملف بالnotepad نلقاه بهذي الصورة

كود:
Waget zyzoom.org
طيب نستخد بالاول الدالة الثانية ...

كود:
[COLOR=DarkRed]$file [/COLOR][COLOR=Red]=[/COLOR] [COLOR=Silver]"test.txt"[/COLOR]
[COLOR=Navy][I]FileWriteline[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$file [/COLOR][COLOR=Red],[/COLOR] [COLOR=Silver]"Waget "[/COLOR][COLOR=Red])[/COLOR]
[I][COLOR=Navy]FileWrite[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=DarkRed]$file[/COLOR][COLOR=Red] ,[/COLOR] [COLOR=Silver]"zyzoom.org"[/COLOR][COLOR=Red])[/COLOR]
كود:
Waget 
zyzoom.org
كتب الكلمة ونزل سطر وإستخدمنا الدالة filewrite . وهي تكمل عند ماتوقف في السطر الجديد

لو إستخدمنا crlf@ في الدالة filewrite راح تكون مكافئة للدلة filewriteline

إيضاحات
بالنسبة ل[ الملف غير قابل للقرأة - أو ليس في وضع القرأة]

وأيضاً [الملف غير قابل للكتابة - أو ليس في وضع الكتابة] .

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

لإنك لو إستخدمت الطريقة الموضحة بالدرس لن يأتيك غير هذا الخطأ

وحلة برمجياُ بإستخدام
يجب عليك تسجيل الدخول او تسجيل لمشاهدة الرابط المخفي


بالنسبة لوضع القرأة والكتابة راح نتكلم عنها بالدرس القادم ...

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

الدرس القادم يشرح الطريقة المتقدمة للتعامل مع الملفات :kmj-by0000 (72):

:d:
 
توقيع : waget
السلام عليكم ورحمة الله وبركاته عساكم على خير يا شباب :king:
بارك الله فيك أستاذ عبد الله سنعود لمراجعة الدروس بس من أين أبدا خاصة أني مش فهما دروس حلقات ابدأ :?:
 
توقيع : ramay
السلام عليكم ورحمة الله وبركاته عساكم على خير يا شباب :king:
بارك الله فيك أستاذ عبد الله سنعود لمراجعة الدروس بس من أين أبدا خاصة أني مش فهما دروس حلقات ابدأ :?:

إنت قلتها :d: إبدأ من الحلقات

جرب كل كود وعدل علية وشوف إيش التغييرات

وأي سؤال إحنا موجودين :d:
 
توقيع : waget
إنت قلتها :d: إبدأ من الحلقات

جرب كل كود وعدل علية وشوف إيش التغييرات

وأي سؤال إحنا موجودين :d:

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