• بادئ الموضوع بادئ الموضوع LINEZERO
  • تاريخ البدء تاريخ البدء
  • المشاهدات 113,361
الحالة
مغلق و غير مفتوح للمزيد من الردود.
طيب يا الغالي ممكن بعض الامثلة لي switch
مع (and-or-not)
الذي فهمت من درس أنه تأخذ قيم راجعه مباشر لوحده يعني ليس هناك داعي لوضع قيمة راجعه لكل الدالة
وعلى ذلك ممكن نضع
هذا فقط
كود:
 MsgBox(0,"","عملية صحيح")
حساس عندي خطأ في فهم هذا درس لكن مش عارف أين

بالنسبه لswitch ,,

لا أعتقد أنه بإمكاننا إستخدام and

وذكرت ذالك بالخطا في الدرس وتم التعديل :b:..

نقدر نستخدم or و not

لاحظت في الدرس الثاني لها إستخدام الفاصله السفلية وأنا أفضله على or

:d:

نفس مثال الدرس الثاني بس بدال [,] or

كود:
switch InputBox("هل أنت مشترك بالدورة","ضع إسمك للتأكد","هنا...")
    case "waget" or "format"or "Expertise"or "Bo.SaQeR"or "Corporation"or "ramay"or "himoScript" or "Self" or "(مجرد انسان)"or "موريادي"
        MsgBox(0,"","أنت مشترك")
    case "","هنا..."
         MsgBox(0,"","لم تدخل شيء")
     Case else
        MsgBox(0,"","أنت غير مشترك")
    EndSwitch

Not
كود:
$INPUT = InputBox("","BEST WEBSITE ")
Switch $INPUT

    Case NOT ($INPUT = "ZYZOOM.ORG")
            MsgBox(0,"",":(")
    Case $INPUT = "ZYZOOM.ORG"
        MsgBox(0,"",":)")

EndSwitch
طريقة الشروط بصفه عامه أنا لا أستخدمها في switch.. أفضل وضع القيم مباشرة..

وأيضاً أفضل عدم إستخدام or not .. في Switch

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

لا أعلم سببها :b:
 

توقيع : waget
كود:
Select
 Case FileExists(@DesktopDir&"\ramay.txt")
   [SIZE=4][COLOR=red];هل من ضروي وضع شيئ هنا[/COLOR][/SIZE]
[SIZE=4][COLOR=red]  ;يوجد شيئ خطأ[/COLOR][/SIZE]
 Case FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat")
   MsgBox(0,"","تم نسخ")
  Case FileDelete(@DesktopDir&"\1.txt")[SIZE=4][COLOR=red] ; أيضا هذه لم تنفذ[/COLOR][/SIZE]
   MsgBox(0,""," تم حذف")
 EndSelect
في هذا تظهر رسالة واحده أنا كانت رسالة نسخ لا تظهر رسالة حذف

ومن كود سوف تعرف فأخي عبد الله ما شاء الله عليك
كود:
$0 = FileExists(@DesktopDir&"\ramay.txt")
$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
$2 = FileDelete(@DesktopDir&"\1.txt")
Select
  Case $0 And $1
  MsgBox(0,"","تم نسخ") 
  Case $2
   MsgBox(0,""," تم حذف") ; هنا أن تم لا تظهر رسالة حذف 
 EndSelect


رسائل لا تظهر غير واحده​
كود:
Select
 Case DirCopy("f:\ramay",@DesktopDir&"\ramay11")
MsgBox(0,""," dont")
Case FileExists(@DesktopDir&"\22.txt")
 MsgBox(0,""," dont1")
Case FileDelete(@DesktopDir&"\2.txt")
 MsgBox(0,""," dont2")
 EndSelect
 
توقيع : ramay
حياك الله أخوي ..

:d:

كود:
Select
 Case FileExists(@DesktopDir&"\ramay.txt")
   [SIZE=4][COLOR=red];هل من ضروي وضع شيئ هنا[/COLOR][/SIZE]
[SIZE=4][COLOR=red]  ;يوجد شيئ خطأ[/COLOR][/SIZE]
 Case FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat")
   MsgBox(0,"","تم نسخ")
  Case FileDelete(@DesktopDir&"\1.txt")[SIZE=4][COLOR=red] ; أيضا هذه لم تنفذ[/COLOR][/SIZE]
   MsgBox(0,""," تم حذف")
 EndSelect
في هذا تظهر رسالة واحده أنا كانت رسالة نسخ لا تظهر رسالة حذف

ومن كود سوف تعرف فأخي عبد الله ما شاء الله عليك
أولا سؤالك عن دالة FileExists
هل من الضروري وضع شيء تحتها .؟؟
أقول لك هل من الضروري إستخدام الدالة أصلاً والتحقق من وجود الملف !!
بشكل منطقي عندما تتحقق من عمل دالة .

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

بنسبه لماذا تنفذ بعض الدوال ولاتنفذ الاخرى ..

فأول شيء ..العبارة SELECT

مثل العبارة IF .. يعني تحقق أحد الشروط نفذ مابعده وأخرج..

إذا لم يتحقق إنتقل لشرط الاخر وهكذا

وبوضعك الدوال داخل العبارة فالداله FileCopy لن تنفذ إلا إذا كانت القيمة الراجعه للدالة FileExists خاطئة ..

وFileDelete لن تنفذ إلا إذا كانت القيمة الراجعه للدالة FileCopy خاطئة ..

:d:

كود:
$0 = FileExists(@DesktopDir&"\ramay.txt")
$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
$2 = FileDelete(@DesktopDir&"\1.txt")
Select
  Case $0 And $1
  MsgBox(0,"","تم نسخ") 
  Case $2
   MsgBox(0,""," تم حذف") ; هنا أن تم لا تظهر رسالة حذف 
 EndSelect

رسائل لا تظهر غير واحده



عندما كتبت هذا الجزء من الكود فأنت عكست الفكرة السابقة

كود:
$0 = FileExists(@DesktopDir&"\ramay.txt")
$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
$2 = FileDelete(@DesktopDir&"\1.txt")
أنت الان تنفذ جميع الدوال هذي ..دالة دالة ,,

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

لكن لا تتوقع من select أو if أن تتحقق من جميع القيم ..

زي ماقلنا فوق منطق الشروط هو إذا تحقق شرط واحد نفذ ماتحته وأخرج

إذا لم يتحقق شرط إختبر الشرط ألي بعده ..



كود:
Select
 Case DirCopy("f:\ramay",@DesktopDir&"\ramay11")
MsgBox(0,""," dont")
Case FileExists(@DesktopDir&"\22.txt")
 MsgBox(0,""," dont1")
Case FileDelete(@DesktopDir&"\2.txt")
 MsgBox(0,""," dont2")
 EndSelect
[/QUOTE]
 
توقيع : waget
حياك الله أخوي ..

:d:


أولا سؤالك عن دالة FileExists
هل من الضروري وضع شيء تحتها .؟؟
أقول لك هل من الضروري إستخدام الدالة أصلاً والتحقق من وجود الملف !!
بشكل منطقي عندما تتحقق من عمل دالة .

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

بنسبه لماذا تنفذ بعض الدوال ولاتنفذ الاخرى ..

فأول شيء ..العبارة SELECT

مثل العبارة IF .. يعني تحقق أحد الشروط نفذ مابعده وأخرج..

إذا لم يتحقق إنتقل لشرط الاخر وهكذا

وبوضعك الدوال داخل العبارة فالداله FileCopy لن تنفذ إلا إذا كانت القيمة الراجعه للدالة FileExists خاطئة ..

وFileDelete لن تنفذ إلا إذا كانت القيمة الراجعه للدالة FileCopy خاطئة ..

:d:



عندما كتبت هذا الجزء من الكود فأنت عكست الفكرة السابقة​

كود:
[CENTER]$0 = FileExists(@DesktopDir&"\ramay.txt")
$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
$2 = FileDelete(@DesktopDir&"\1.txt")[/CENTER]
أنت الان تنفذ جميع الدوال هذي ..دالة دالة ,,​



وبعدها تتحقق من القيم الراجعه لها ..​

لكن لا تتوقع من select أو if أن تتحقق من جميع القيم ..​

زي ماقلنا فوق منطق الشروط هو إذا تحقق شرط واحد نفذ ماتحته وأخرج​

إذا لم يتحقق شرط إختبر الشرط ألي بعده ..​




كود:
Select
 Case DirCopy("f:\ramay",@DesktopDir&"\ramay11")
MsgBox(0,""," dont")
Case FileExists(@DesktopDir&"\22.txt")
 MsgBox(0,""," dont1")
Case FileDelete(@DesktopDir&"\2.txt")
 MsgBox(0,""," dont2")
 EndSelect
أهلا في الغالي عبد الله أشتقنا لملاحظتك
طيب ممكن طريقة صحيح لأكواد مع دالة
وفي عدت طرق:b:
:king:​
 
توقيع : ramay
دالتي ShellExecuteWait /ShellExecute لفتح وتشغيل الملفات

دالتي ShellExecuteWait /ShellExecute لفتح وتشغيل الملفات

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

ShellExecute و ShellExecuteWait

فقط أن الدالة ShellExecuteWait تنتظر إغلاق الملف حتى يكمل السيكريبت

جميعا تستقبل نفس الوسيطات ..

ShellExecute

الصيغة العامة للدالة ..

كود:
[COLOR=Navy][I]ShellExecute[/I][/COLOR][COLOR=Red]( [/COLOR][COLOR=Silver]"filename"[/COLOR][COLOR=Red] [,[/COLOR] [COLOR=Silver]"parameters"[/COLOR] [COLOR=Red][,[/COLOR] [COLOR=Silver]"workingdir"[/COLOR][COLOR=Red] [,[/COLOR] [COLOR=Silver]"verb"[/COLOR][COLOR=Red][,[/COLOR] showflag[COLOR=Red]]]]] )[/COLOR]
الدالة فيها وسيط واحد إجباري[filename]البقية إختيارية
filename: مسار الملف ..

الدالة ShellExecute تشغل جميع صيغة الملفات تنفيذية وغيرها من الصيغ وأيضاً يمكن فتح مجلد أو موقع من خلالها :y:.. بطريقة مباشرة

على العكس في دالة run

إذا كان الملف تنفيذي .. يمكننا إرسال وسيطات له من خلال الوسيط التالي للدالة ..

ليس مثل الدالة run نرسله في نفس الوسيط :d:
إذا لم يكن تنفيذي ... فالدالة هنا لها علاقة وثيقه بسجل النظام ..

بمعنى لدي ملف text .. ولدي برنامجين .. لتحرير الملفات النصية ..

فالدالة تنظر إلى سجل النظام إلى القيمة ألي تحدد البرنامج الافتراضي..للتعامل مع هذا الملف ..


parameters:هنا نضع الوسيطات للبرنامح في الغالب نضع نص فارغ ""

إلا إذا أردنا أن نرسل وسيطات للملف مثل سويتش أو غيره

^
راح نشوفها في الامثلة :d:


workingdir : نضع فية نص فارغ ""

verb : هنا نحدد تعامل الدالة مع الملف ..

إذا وضعته نص فارغ "" فراح تنظر الدالة لسجل النظام مره أخرى ..
بمعني .. تنظر لفعل البرنامج ألي يخص هذا الملف..
كيف يتعامل معه بالوضع الافتراضي ..
إذا وضعت :"open"
فهنا نعني فتح الملف ..
مثلا الوضع الإفتراضي لدى المستخدم في تشغيل ملفات reg
هو برنامج regedit.exe
فعند وضعنا في هذا الوسيط كلمه "open"
فهنا راح ندمج ملف الريجستري بسجل النظام ..

أما إذا وضعنا "edit"

فهنا راح نحرر الملف من خلال Notepad

أما إذا كان البرنامج المسؤول عن هذي الصيغه هوNotepad

فعندها "open","edit"

راح يكون عملها واحد ؟؟ <<لخبطه صح :hh::hh:

وأخيراً : إذاكان الملف لايقبل التحرير فلا تفكر تستخدم "edit"لأن هذا راح يسبب خطأ للسيكريبت
الموضوع موضوع نسبي على حسب الصيغه ألي تتعامل معها إنت ..

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

وتعدل فيها حيب رغبت قبل إستخدام الداله shell


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

أو تستخدم طرق أخرى مثل تشغيل البرنامج ألي تريده يتعامل مع الملف وترسل الملف كوسيط له

مثل ماعملنا في دالة run سابقاً


showflag : مرت علينا سابقاُ في دالة run

وهي تحدد شكل ضهور البرنامج قيمها عباره عن ماكرو..

@SW_HIDE = إخفاء النافذة
@SW_MINIMIZE = تصغير النافذ
@SW_MAXIMIZE = تكبير النافذة

القيم الراجعه للدالة :
في حالة النجاح 1
في حالة الفشل 0

ShellExecuteWait

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

كود:
[COLOR=Navy][I]ShellExecuteWait[/I][/COLOR][COLOR=Red]([/COLOR] [COLOR=Silver]"filename"[/COLOR] [COLOR=Red][,[/COLOR] [COLOR=Silver]"parameters"[/COLOR] [COLOR=Red][,[/COLOR] [COLOR=Silver]"workingdir"[/COLOR] [COLOR=Red][, [/COLOR][COLOR=Silver]"verb"[/COLOR][COLOR=Red] [,[/COLOR] showflag[COLOR=Red]]]]] )[/COLOR]
نفس وسيطات الدالة الاولى :d:

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

راح نناقشها لاحقاُ لأنها مثل دالة runwait [
يجب عليك تسجيل الدخول او تسجيل لمشاهدة الرابط المخفي
]

:d::d:

الامثلة /

زياره منتدى زيزووم :d:..

كود:
ShellExecute("http://www.zyzoom.org/vb")
زيارة منتدى زيزووم عن طريق الدالة لكن بشكل غير مباشر :d:

بإستخدام ملف دفعي :bleh:
كود:
ShellExecute("1.bat","http://www.zyzoom.org/vb")
هذا كود الملف الدفعي للتجربة :

كود:
[COLOR=Magenta]@[/COLOR][COLOR=Blue]echo [/COLOR]off
[COLOR=Blue]start [/COLOR][COLOR=DarkOrange][COLOR=Orange]%~1[/COLOR] [/COLOR] 
[COLOR=Blue]pause [/COLOR][COLOR=Red]>>[/COLOR] [COLOR=Blue]nul[/COLOR]
الهدف من هذا المثال ليس معرفه كيفيه زيارة المواقع أو غيره

الهدف هو طريقة تشغيل الملفات التنفيذية ..وإرسال الوسيطات لها. :d:

المثال الاخير ..

لدينا ملف ريجستري نريد تحريره ودمجه ..

مع ملاحظة إن الملف المسؤول عن التعامل مع ملفاات الريجستري هو regedit >>وهو الغالب :d:

تحرير الملف:

كود:
ShellExecute("registry.reg","","","edit")
فتح الملف ودمج القيم في الريجستري .. :

كود:
ShellExecute("registry.reg","","","open")
بالنسبة لتنصيب الصامت لملف الريجستري نستخدم هذي الطريقه :

كود:
ShellExecute("regedit.exe","/s registry.reg")
:d::d:
 
توقيع : waget
أهلا في الغالي عبد الله أشتقنا لملاحظتك
طيب ممكن طريقة صحيح لأكواد مع دالة
وفي عدت طرق:b:
:king:


:king: هلا فيك أخوي

أعذرني على تأخري .. في الرد :b:

إنت ليس لديك مشكلة من ناحية الاخطاء في السيكريبت ..

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

إن شاء الله إذا لقيت وقت كافي كتبت مثال شامل عن الدوال والعبارات ألي أخذنها ..

راح ندخل في اللوب خلال الاسبوع هذا إن شاء الله فشد حيلك :d:

:king::king:​
 
توقيع : waget
:king: هلا فيك أخوي​

أعذرني على تأخري .. في الرد :b:​

إنت ليس لديك مشكلة من ناحية الاخطاء في السيكريبت ..​

المشكلة لديك في فهم أليه الكود ..يعني الهدف من وضع هذي العبارة وتلك الدالة وهكذا..​

إن شاء الله إذا لقيت وقت كافي كتبت مثال شامل عن الدوال والعبارات ألي أخذنها ..​

راح ندخل في اللوب خلال الاسبوع هذا إن شاء الله فشد حيلك :d:​


:king::king:​
بارك الله فيك ياريت يكون عندك وقت لهذا يا اغالي للأفادة أكثر


طيب مثال هذا كود لماذا لا تظهر فيه كل رسائل تظهر واحد فقط​

كود:
$0 = FileExists(@DesktopDir&"\ramay.txt")
$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
$2 = FileDelete(@DesktopDir&"\1.txt")
Select
  Case $0 And $1
  MsgBox(0,"","تم نسخ") 
  Case $2
   MsgBox(0,""," تم حذف") ; هنا أن تم لا تظهر رسالة حذف 
 EndSelect
كود:
Select
 Case DirCopy("f:\ramay",@DesktopDir&"\ramay11")
MsgBox(0,""," dont")
Case FileExists(@DesktopDir&"\22.txt")
 MsgBox(0,""," dont1")
Case FileDelete(@DesktopDir&"\2.txt")
 MsgBox(0,""," dont2")
EndSelect
 
توقيع : ramay
بارك الله فيك ياريت يكون عندك وقت لهذا يا اغالي للأفادة أكثر


طيب مثال هذا كود لماذا لا تظهر فيه كل رسائل تظهر واحد فقط​

كود:
$0 = FileExists(@DesktopDir&"\ramay.txt")
$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
$2 = FileDelete(@DesktopDir&"\1.txt")
Select
  Case $0 And $1
  MsgBox(0,"","تم نسخ") 
  Case $2
   MsgBox(0,""," تم حذف") ; هنا أن تم لا تظهر رسالة حذف 
 EndSelect
كود:
Select
 Case DirCopy("f:\ramay",@DesktopDir&"\ramay11")
MsgBox(0,""," dont")
Case FileExists(@DesktopDir&"\22.txt")
 MsgBox(0,""," dont1")
Case FileDelete(@DesktopDir&"\2.txt")
 MsgBox(0,""," dont2")
EndSelect


:d: هلا رامي ..

أرجو أن تقرأ ردي مره أخرى .. لأني رديت على تسألك فية .. وأيضاً هذا الموضوع تكلمنا فية أول ما أخذا الif

if /select ..

إذا تحقق شرط واحد تنفذ مابعده وتخرج ..

يعني على مثالك هذا ..

كود:
[COLOR=SeaGreen]$0 = FileExists(@DesktopDir&"\ramay.txt")
$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
$2 = FileDelete(@DesktopDir&"\1.txt")[/COLOR]
Select
  [COLOR=Red]Case $0 And $1[/COLOR]
  [COLOR=Blue]MsgBox(0,"","تم نسخ") [/COLOR]
  Case $2
   MsgBox(0,""," تم حذف") ; هنا أن تم لا تظهر رسالة حذف 
 EndSelect

أو شيء راح تنفذ جميع الدوال ألي بالاعلى ألي محدده بالاخضر..

وبعد التنفيذ راح يتم الدخول على select..

وإختبار الشروط..

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

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

الاولى وضع عبارة شرط لكل واحده ..

لكن في ملاحظة على كودك الكود ليس منطقي في عمله

أنت في كودك تستفيد من الرسائل ولا تستفيد من الدوال ...

وليتها على الشكل الصحيح :q:

أنا راح أعدل في كودك ليكون منطقي أكثر ..:d:

كود:
$Exists = FileExists(@DesktopDir&"\ramay.txt")
Select
    case $Exists = 1
        $msg = MsgBox(1,"","الملف موجود سيتم النسخ إلى" & @crlf & _
        @ProgramFilesDir&"\zyzoom.dat" & @crlf & _
        "هل أنت موافق؟؟")
        if $msg = 1 then
            $Copy= FileCopy(@DesktopDir&"\ramay.txt",@ProgramFilesDir&"\zyzoom.dat",9)
            if $Copy= 1 Then
                $Del = FileDelete(@DesktopDir&"\ramay.txt")
                if $Del = 1 Then
                    MsgBox(0,"","تم")
                endif
            endif
        endif
    case Else
        MsgBox(16,"","الملف غير موجود")
 EndSelect

حاولت أعقده أكثر :hh::hh:

الكود الان يتحقق من وجود الملف ..

إذا كان موجود يضهر لك رساله

في حال رغبتك في نسخ الملف وتغيير إسمه وحذف الملف الاصل..

إذا موافق راح يتم النسخ

إذا تم النسخ بشكل صحيح راح يتم حذف الملف الاصل ...

:king:

إذا مصر على فكره كودك السابق فقط ضع لكل داله عبارة شرط مستقله :d:

أما الكود الاخير ..

بعض الدوال لن يتم تنفيذها إذا تم تنفيذ الاخرى وذكرت لك السبب في الرد السابق

:d::d:
 
توقيع : waget
:d: هلا رامي ..

أرجو أن تقرأ ردي مره أخرى .. لأني رديت على تسألك فية .. وأيضاً هذا الموضوع تكلمنا فية أول ما أخذا الif

if /select ..

إذا تحقق شرط واحد تنفذ مابعده وتخرج ..

يعني على مثالك هذا ..

كود:
[COLOR=seagreen]$0 = FileExists(@DesktopDir&"\ramay.txt")[/COLOR]
[COLOR=seagreen]$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)[/COLOR]
[COLOR=seagreen]$2 = FileDelete(@DesktopDir&"\1.txt")[/COLOR]
Select
  [COLOR=red]Case $0 And $1[/COLOR]
  [COLOR=blue]MsgBox(0,"","تم نسخ") [/COLOR]
  Case $2
   MsgBox(0,""," تم حذف") ; هنا أن تم لا تظهر رسالة حذف 
 EndSelect

أو شيء راح تنفذ جميع الدوال ألي بالاعلى ألي محدده بالاخضر..

وبعد التنفيذ راح يتم الدخول على select..

وإختبار الشروط..

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

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

الاولى وضع عبارة شرط لكل واحده ..

لكن في ملاحظة على كودك الكود ليس منطقي في عمله

أنت في كودك تستفيد من الرسائل ولا تستفيد من الدوال ...

وليتها على الشكل الصحيح :q:

أنا راح أعدل في كودك ليكون منطقي أكثر ..:d:

كود:
$Exists = FileExists(@DesktopDir&"\ramay.txt")
Select
    case $Exists = 1
        $msg = MsgBox(1,"","الملف موجود سيتم النسخ إلى" & @crlf & _
        @ProgramFilesDir&"\zyzoom.dat" & @crlf & _
        "هل أنت موافق؟؟")
        if $msg = 1 then
            $Copy= FileCopy(@DesktopDir&"\ramay.txt",@ProgramFilesDir&"\zyzoom.dat",9)
            if $Copy= 1 Then
                $Del = FileDelete(@DesktopDir&"\ramay.txt")
                if $Del = 1 Then
                    MsgBox(0,"","تم")
                endif
            endif
        endif
    case Else
        MsgBox(16,"","الملف غير موجود")
 EndSelect

حاولت أعقده أكثر :hh::hh:

الكود الان يتحقق من وجود الملف ..

إذا كان موجود يضهر لك رساله

في حال رغبتك في نسخ الملف وتغيير إسمه وحذف الملف الاصل..

إذا موافق راح يتم النسخ

إذا تم النسخ بشكل صحيح راح يتم حذف الملف الاصل ...

:king:

إذا مصر على فكره كودك السابق فقط ضع لكل داله عبارة شرط مستقله :d:

أما الكود الاخير ..

بعض الدوال لن يتم تنفيذها إذا تم تنفيذ الاخرى وذكرت لك السبب في الرد السابق

:d::d:
كلمة مبدع قليله فيك​


إذا مصر على فكره كودك السابق فقط ضع لكل داله عبارة شرط مستقله :d:

ليس الاصرار لكن أريد أعرف كيف ستكتب فقط​


قصدك هيك​



كود:
$0 = FileExists(@DesktopDir&"\ramay.txt")
كود:
[CENTER]$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
[CENTER]$2 = FileDelete(@DesktopDir&"\1.txt")
Select
Case $0 And $1
 MsgBox(0,"","تم نسخ")
EndSelect
Select
 Case $2
  MsgBox(0,""," تم حذف")
EndSelect[/CENTER]

أما هكذا
لكن كودين مش عبيظهر خطأ لكن لم يقوم في عمله​
كود:
[CENTER]Select
 Case FileExists(@DesktopDir&"\ramay.txt")
Case FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
 MsgBox(0,"","تم نسخ")
EndSelect
Select
 Case FileDelete(@DesktopDir&"\1.txt")
  MsgBox(0,""," تم حذف")
EndSelect[/CENTER]


[/CENTER]
 
توقيع : ramay


كود:
$0 = FileExists(@DesktopDir&"\ramay.txt")
كود:
[CENTER]$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
[CENTER]$2 = FileDelete(@DesktopDir&"\1.txt")
Select
Case $0 And $1
 MsgBox(0,"","تم نسخ")
EndSelect
Select
 Case $2
  MsgBox(0,""," تم حذف")
EndSelect[/CENTER]
[/CENTER]



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

قصدي أليس من المفترض إنك تتحقق من وجود الملف ثم تنسخه ..

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

وبعدكذا تبدا إنت تتحقق من القيم الراجعه ..

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

إذا الملف موجود إنسخ إذا مو موجود لاتنسخ ..

وبعدين أسماء الملفات مختلف إنت كذا تتحقق من وجود ملف وتنسخ ملف آخر :?:

^_^

أما هكذا
لكن كودين مش عبيظهر خطأ لكن لم يقوم في عمله​
كود:
[CENTER]Select
 Case FileExists(@DesktopDir&"\ramay.txt")
Case FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
 MsgBox(0,"","تم نسخ")
EndSelect
Select
 Case FileDelete(@DesktopDir&"\1.txt")
  MsgBox(0,""," تم حذف")
EndSelect[/CENTER]

أول شيء أنظر إلا الجزئية الثالثه في هذا الدرس [
يجب عليك تسجيل الدخول او تسجيل لمشاهدة الرابط المخفي
]

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

بعض الدوال لن يتم تنفيذها إذا تم تنفيذ الاخرى وذكرت لك السبب في الرد السابق

شكلك مافهت قصدي من هذا الرد

على العموم
كود:
Select
    [COLOR=Red]Case FileExists(@DesktopDir&"\ramay.txt")[/COLOR]
[COLOR=Green].........[/COLOR]
    [COLOR=Blue]Case FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)[/COLOR]
        MsgBox(0,"","تم نسخ")
EndSelect

Select
    Case FileDelete(@DesktopDir&"\1.txt")
        MsgBox(0,""," تم حذف")
EndSelect

الان أول شيء راح تنفذ الدالةFileExists

إذا الملف موجود .. راح يخرج من العبارة الاولى ..

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

بالتحديد في مكان النقاط الخضر

إذا الملف ليس موجود ...راح ينزل للشرط الثاني ..
FileCopy

ويتحقق من قيمتها الراجعه ..

يعني ماراح تنفذ الدالة
FileCopy
إلا إذا فشلت الدلة
FileExists
 
توقيع : waget
طيب في هذه طريقة

تاكدت من وجود ملف
كود:
$0 = FileExists(@DesktopDir&"\ramay.txt")
$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
$2 = FileDelete(@DesktopDir&"\1.txt")
Select
 case $0 = 1 And $1 = 1
 MsgBox(0,"","تم نسخ")
EndSelect
Select
 Case $2
  MsgBox(0,""," تم حذف")
EndSelect
 
توقيع : ramay
طيب في هذه طريقة

تاكدت من وجود ملف
كود:
$0 = FileExists(@DesktopDir&"\ramay.txt")
$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
$2 = FileDelete(@DesktopDir&"\1.txt")
Select
 case $0 = 1 And $1 = 1
 MsgBox(0,"","تم نسخ")
EndSelect
Select
 Case $2
  MsgBox(0,""," تم حذف")
EndSelect

إيش فكره الكود هذا ؟؟

:d:
 
توقيع : waget
إيش فكره الكود هذا ؟؟

:d:
يوجد شيئ غامض مش عم شوفه الله أعلم

طيب أنا كتبته هكذا
أنا كان ملف الاول موجود نفذ ألي تحته لكن لم ينفذ
طبعا كود الذي تحت
كود:
$0 = FileExists(@DesktopDir&"\ramay.txt")
$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
$2 = FileDelete(@DesktopDir&"\1.txt")
Select
 case $0 = 1
  Case $1
 MsgBox(0,"","تم نسخ")
EndSelect
Select
 Case $2
  MsgBox(0,""," تم حذف")
EndSelect
 
توقيع : ramay
يوجد شيئ غامض مش عم شوفه الله أعلم

طيب أنا كتبته هكذا
أنا كان ملف الاول موجود نفذ ألي تحته لكن لم ينفذ
طبعا كود الذي تحت
كود:
$0 = FileExists(@DesktopDir&"\ramay.txt")
$1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
$2 = FileDelete(@DesktopDir&"\1.txt")
Select
 case $0 = 1
  Case $1
 MsgBox(0,"","تم نسخ")
EndSelect
Select
 Case $2
  MsgBox(0,""," تم حذف")
EndSelect

:d: طيب أخوي

أنت الان تظعها كشروط في نفس المستوى

يعني كل واحد ماله علاقة في الثاني

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

إذا أردت أن يتحقق ثم ينسخ

إستخدم شرط داخل شرط بمعني

عبارتين select متداخله

شوف هذا

كود:
$0 = FileExists(@DesktopDir&"\1.txt")
Select
    case $0 = 1
        
    $1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
        select 
            case $1 = 1
                MsgBox(0,"","تم النسخ")
        EndSelect
EndSelect

أو

كود:
$0 = FileExists(@DesktopDir&"\1.txt")
Select
    case $0 = 1
        
    $1 = FileCopy(@DesktopDir&"\1.txt",@ProgramFilesDir&"\zyzoom.dat",9)
        if $1 = 1 then 
            
                MsgBox(0,"","تم النسخ")
        endif
EndSelect
 
توقيع : waget
[1] دوال التعامل مع الريجستري (RegDelete /RegWrite/RegRead)

[1] دوال التعامل مع الريجستري (RegDelete /RegWrite/RegRead)

راح نأخذ هذه الدوال اليوم يتبقى لنا دالتين تتعامل مع الريجستري رأح نأخذها بعد

الدخول في الحلقات لأن فيدتها لاتتحقق إلا بها ..


RegRead

الدالة تقوم بقرأه بيانات قيمة في أحد مفاتيح الريجستري وتعود بتلك القيمة
وهي في نظري أهم دالة في التعامل مع الريجستري ..
لأني نادراً ما أعدل قيمة أو أحذفها >> مايحب يلعب:d:

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

كود:
[I][COLOR=Navy]RegRead[/COLOR][/I][COLOR=Red]([/COLOR] [COLOR=Silver]"keyname"[/COLOR][COLOR=Red],[/COLOR] [COLOR=Silver]"valuename"[/COLOR] [COLOR=Red])[/COLOR]
keyname: إسم المفتاح يجب أن نكتب مسار المفتاح كامل
مثل /
كود:
 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion"
valuename : إسم القيمة

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

في حالة النجاح : ترجعه ببيانات القيمة ..

في حالة الفشل : ترجع بنص فارغ ""

مثال /
إضهار سريال idm

كود:
[COLOR=DarkRed]$Sn[/COLOR] [COLOR=Red]=[/COLOR][COLOR=Navy][I] RegRead[COLOR=Red]([/COLOR][/I][/COLOR][COLOR=Silver]"HKEY_LOCAL_MACHINE\SOFTWARE\Internet Download Manager"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Serial"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]if[/COLOR] [COLOR=DarkRed]$Sn[/COLOR]  [COLOR=Red]<>[/COLOR] [COLOR=Silver]""[/COLOR] [COLOR=Blue]Then[/COLOR]
    [I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Serial"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Sn \ "[/COLOR] [COLOR=Red]&[/COLOR] [COLOR=DarkRed]$Sn [/COLOR][COLOR=Red])[/COLOR]
    [COLOR=Blue]endif[/COLOR]
RegWrite

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

وأيضاً يمكن وإنشاء قيمة ووضع إسم وبيانات لها ..

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

راح يتم تحديث البيانات ببياناتك الجديدة

الصيغه العامه للدالة /
كود:
[COLOR=Navy][I]RegWrite [/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver] "keyname"[/COLOR][COLOR=Red] [,[/COLOR][COLOR=Silver]"valuename"[/COLOR][COLOR=Red] [,[/COLOR] [COLOR=Silver]"type"[/COLOR][COLOR=Red][, [/COLOR]value[COLOR=Red]]]] )[/COLOR]
keyname : إسم المفتاح .. يجب أن يكون مسار المفتاح كامل
valuename : إسم القيمة
type : نوع القيمة
أنواع القيم على النحو التالي :
كود:
"REG_SZ", "REG_MULTI_SZ", "REG_EXPAND_SZ", "REG_DWORD", "REG_QWORD",  "REG_BINARY"
value : بيانات القيمة ..
القيه الراجعه للدالة

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

في حالة الفشل : 0

مثال /
تسجيل idm ..

طبعاً البرنامج يتطلب إضافه قيم أخرى غير السيريال لكن هذا فقط لتوضيح الفكره

كود:
[COLOR=DarkRed]$Read [/COLOR]= [COLOR=Navy][I]RegRead[/I][/COLOR][COLOR=Silver][COLOR=Red]([/COLOR]"HKEY_LOCAL_MACHINE\SOFTWARE\Internet Download Manager"[/COLOR],[COLOR=Silver]"Serial"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]if[/COLOR][COLOR=DarkRed] $Read[/COLOR]   [COLOR=Red]<>[/COLOR] [COLOR=Silver]""[/COLOR] [COLOR=Blue]Then[/COLOR]
    [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Serial"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Program is Registered"[/COLOR] [COLOR=Red])[/COLOR]
[COLOR=Blue]Else[/COLOR]
  [COLOR=DarkRed]  $Write[/COLOR] = [COLOR=Navy][I]RegWrite[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver]"HKEY_LOCAL_MACHINE\SOFTWARE\Internet Download Manager"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Serial"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"REG_SZ"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"7TSFG-YWZ5O-YWLSB-89N41"[/COLOR][COLOR=Red])[/COLOR]
   [COLOR=Blue] if[/COLOR] [COLOR=DarkRed]$Write[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]1[/COLOR] [COLOR=Blue]Then[/COLOR]
        [I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR],[COLOR=Silver]"Serial"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Success"[/COLOR][COLOR=Red])[/COLOR]
    [COLOR=Blue]endif[/COLOR]
[COLOR=Blue]endif[/COLOR]
أولاً يتم قرأة القيمة إذا القيمة ,, موجودة
تضهر رساله ويخرج

إذالم تكن موجودة يتم إضافتها وتضهر رسالة بذالك


RegDelete

عمل الداله هو حذف المفتاح أو القيمة ألي تحددها في المفتاح
كود:
[COLOR=Navy][I]RegDelete [/I][/COLOR][COLOR=Red]([/COLOR] [COLOR=Silver]"keyname"[/COLOR] [COLOR=Red][, [/COLOR][COLOR=Silver]"valuename"[/COLOR][COLOR=Red]] )[/COLOR]
يستقبل وسيطين الاخير إختياري طبعاُ

keyname : إسم المفتاح وزي ماقلنا سابقاُ إنه ضروري تكتب المسار كامل

valuename : إسم القيمة وهذا الوسيط إختياري بمعنى

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

أما لو وضعنا إسم القيمة فنحن نحذفها لوحدها :)

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

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

في حالة الفشل :0



مثال /

كود:
[COLOR=DarkRed]$Read[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Navy][I]RegRead[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver]"HKEY_LOCAL_MACHINE\SOFTWARE\Internet Download Manager"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Serial"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]if [/COLOR][COLOR=DarkRed]$Read[/COLOR][COLOR=Red]<>[/COLOR] [COLOR=Silver]""[/COLOR] [COLOR=Blue]Then[/COLOR]
    [COLOR=DarkRed]$Del[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Navy][I]RegDelete[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver]"HKEY_LOCAL_MACHINE\SOFTWARE\Internet Download Manager"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Serial"[/COLOR][COLOR=Red])[/COLOR]
    [COLOR=Blue]if [/COLOR][COLOR=DarkRed]$Del[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]1[/COLOR] [COLOR=Blue]Then[/COLOR]
        [COLOR=Navy]MsgBox[/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Delete"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Success"[/COLOR][COLOR=Red])[/COLOR]
    [COLOR=Blue]endif[/COLOR]

[COLOR=Blue]Else[/COLOR]
    [COLOR=Indigo][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Serial"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Not Found"[/COLOR] [COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
 
توقيع : waget
والله جات بوقتها ... دوال الريجستري

كنت استخدم الدوس في اي شيء يخص الريجستري .. جاري التطبيق ياغالي
 
توقيع : موريادي
والله جات بوقتها ... دوال الريجستري

كنت استخدم الدوس في اي شيء يخص الريجستري .. جاري التطبيق ياغالي
اها وينك يا الغالي توقعت ارك في هذا درس
شو درس بيعجبك تنفذ وغيره لا
يا فرحتك يادرس ريجستري الغالي موريادي رجع من أجلك:d:
 
توقيع : ramay
اها وينك يا الغالي توقعت ارك في هذا درس
شو درس بيعجبك تنفذ وغيره لا
يا فرحتك يادرس ريجستري الغالي موريادي رجع من أجلك:d:

حيو استاذ رامي ...

بالنسبة للدروس قاعد اطبقها والاستاذ عبدالله داري بس ما وضعتها هنا لسبب :d:

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

...
 
توقيع : موريادي
حيو استاذ رامي ...

بالنسبة للدروس قاعد اطبقها والاستاذ عبدالله داري بس ما وضعتها هنا لسبب :d:

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

...
الامين
وننتظر باقي الاعضاء لتطبيق
 
توقيع : ramay
تفضل يا الغالي عبد الله
تم تحديث مشاركة


PHP:
$0 = FileExists(@DesktopDir&"\ramay.bat")
$1 = @DesktopDir&"\ramay.bat"
$3 = @ProgramFilesDir&"\ramay.bat"
$4 = @DesktopDir&"\ramay.bat"
Select
case $0 = 1
$2 = FileCopy ($1,$3)
Select
Case $2 = 1
MsgBox(0,"","تم نسخ")
$5 = FileDelete($4)
Select
Case $5 = 1
MsgBox(0,""," تم حذف")
EndSelect
EndSelect
EndSelect
بنسبة لهذا كود هل ممكن كتابته الافضل من ذلك داخل شرط مباشر مع قيم راجعه
PHP:
Select
 Case FileExists(@DesktopDir&"\1.txt")
Select
Case FileCopy (@ProgramFilesDir&"\ramay.txt",@DesktopDir&"\ramay.bat")
  MsgBox(0,"","تم نسخ")
  Select
Case FileDelete(@DesktopDir&"\ramay.bat")
  MsgBox(0,""," تم حذف")
 EndSelect
EndSelect
EndSelect

PHP:
Select
 Case FileExists(@DesktopDir&"\1.txt")
 Select
Case "1"
Select
 Case FileCopy (@ProgramFilesDir&"\ramay.txt",@DesktopDir&"\ramay.bat")
  Select
   Case "1"
  MsgBox(0,"","تم نسخ")
  Select
 Case FileDelete(@DesktopDir&"\ramay.bat")
  Select
   Case "1"
  MsgBox(0,""," تم حذف")
 EndSelect
EndSelect
EndSelect
EndSelect
EndSelect
Case Else
 MsgBox(0,""," ملف غير موجود")
EndSelect

وهذا كود يعمل لكن يوجد شيئ غريب هوكود على هذه لا يعمل مع أن رسالة تقول تم عملية
ولم أعكس متغير 1 مكان متغير ثلاثة في مسار كود يعمل صح
PHP:
$0 = FileExists(@HomeDrive&"\ramay.txt")
$1 = @DesktopDir&"\ramay.txt"
$3 = @HomeDrive&"\ramay.txt"
Switch $0
 Case $0 = 1
  $5 = FileCopy ($1,$3,1)
  Switch $5
   Case $5 =1
    MsgBox(0,""," dont"&$3)
   Case Else
    MsgBox(16,"","eroor")
  EndSwitch
  EndSwitch
وهذا كود وضع شروط مباشر
PHP:
 Switch FileExists(@HomeDrive&"\1.txt")
 Case "1"
 Switch FileCopy(@HomeDrive&"\ramay.txt",@DesktopDir&"\ramay1.txt")
   Case "1"
    MsgBox(0,""," dont")
   Case Else
    MsgBox(16,"","eroor")
  EndSwitch
Case Else
 MsgBox(0,"","ملف غير موجود")
 EndSwitch
 
توقيع : ramay
الحالة
مغلق و غير مفتوح للمزيد من الردود.
عودة
أعلى