تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
WordList
#1
السلام عليكم ورحمة الله وبركاته

في موضوع سابق طرحته هنا عن فكرة إنشاء برنامج يقوم بعمل ملفات WordList مرتبة ترتيب أبجدي وقد تجاوب معي كلاً من أخي عبدالله الدوسري وأخي الجوكر وفي الحقيقة أنا إستفدت من خبرتهم الكثير وجزاهم الله خيراً لما يبذلونه من جهد لتوصيل المعلومة حتى نستفيد فلهم منى كل الشكر والتقدير طبعاً لا أنسى باقي الأعضاء الكرام بهذا الصرح العلمي في الشكر فكل عضو هنا يشكل عمود من أعمدة هذا الصرح العلمي - - طرحي للموضوع مجدداً لكي أستفيد أكثر من خبرتهم فأنا أحاول جاهداً أن أطور من نفسي و أتعلم أكثر كيف أكتب الكود بطرق إحترافية و الأنسب ولاكن أبحث كثيراً وأرجع هنا لأستفيد من إخوتي في هذا المنتدى.

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

فلنبدأ مجدداً خطوة بخطوة 

صورة مبدئية للبرنامج


وشكراً
الرد
تم الشكر بواسطة:
#2
يومكم مبارك أحبائي
الرد
#3
وعليكم السلام ورحمة الله وبركاته

مرحباً اخى sads فى البداية انصح ان تطلع
على دورات بخصوص الخوارزميات فسيفيدك كثيراً
فى مثل هذه الامور وسيسهل عليك الامور اكثر مما تتخيل

ثانياً بما تطلبه بشكل عام فاسقوم بشرح الامر نظرياً
فى بداية الامر انت محتاج انشاء تعرف يحتوى على الاحرف الانجليزية من a الى z

مثال للتوضيح
كود :
Dim aa As String = "abcdefghijklmnopqrstuvwxyz"

ومن ثم بحسبب عدد الاحرف التى تحتاج ان تعرض
والمقصود بها ان يبداء من aaa وينتهى مثلاً عند zzz

فانت هنا بحاجة لعمل For متعدد لتحويل كل حرف لتكرار 3 مرات
وعرض الامر من aaa الى zzz

المثال التالى لحرف واحد فقط
كود :
       For a As Integer = 0 To aa.Length - 1
           MsgBox(aa(a))
       Next
طيب الطريقة التى بالاعلى تفيد لاى كان الاحرف عربى او انجليزيى او اى لغة
طيب لو كان الاحرف انجليزية المطلوب العمل عليها فيمكن فقط بمثل هذا الكود تنفيذ الامر مباشر
المثال لحرف واحد فقط
كود :
       For ii As Integer = 65 To 90
           MsgBox(Chr(ii))
       Next


عند اختبار الامر ستجد الكود لكلاهما يعطى نفس الامر
طيب بعد الشرح نظرياً مع الاكواد السابقة الان
كيف اتمام الامر طبقاً لما هو فى الموضوع

الكود بالطريقة الثانية من aaa الى zzz
كود :
       For i As Integer = 65 To 90
           For ii As Integer = 65 To 90
               For iii As Integer = 65 To 90
                   ListBox1.Items.Add(Chr(i) + Chr(ii) + Chr(iii))
               Next
           Next
       Next

الكود بالطريقة الثانية من aaa الى aaz طبقاً لما هو بالصورة
كود :
       For i As Integer = 65 To 90
           For ii As Integer = 65 To 90
               For iii As Integer = 65 To 90
                   ListBox1.Items.Add(Chr(i) + Chr(ii) + Chr(iii))
                   If (Chr(i) + Chr(ii) + Chr(iii)).ToString = "AAZ" Then Exit Sub
               Next
           Next
       Next

لاحظ الامر لا يختلف فقط تم وضع هذا السطر
كود :
If (Chr(i) + Chr(ii) + Chr(iii)).ToString = "AAZ" Then Exit Sub

طيب بالطريقة الاولى بوضع معرف بالاحرف
من aaa الى zzz
كود :
       Dim aa As String = "abcdefghijklmnopqrstuvwxyz"
       For i As Integer = 0 To aa.Length - 1
           For ii As Integer = 0 To aa.Length - 1
               For iii As Integer = 0 To aa.Length - 1
                   ListBox1.Items.Add(aa(i) + aa(ii) + aa(iii))
               Next
           Next
       Next

الطريقة الاولى من aaa الى aaz طبقاً للصورة
كود :
       Dim aa As String = "abcdefghijklmnopqrstuvwxyz"
       For i As Integer = 0 To aa.Length - 1
           For ii As Integer = 0 To aa.Length - 1
               For iii As Integer = 0 To aa.Length - 1
                   ListBox1.Items.Add(aa(i) + aa(ii) + aa(iii))
                   If (aa(i) + aa(ii) + aa(iii)).ToString = "aaz" Then Exit Sub
               Next
           Next
       Next

وكما تلاحظ ان الفرق الوحيد فقط وجود سطر
كود :
If (aa(i) + aa(ii) + aa(iii)).ToString = "aaz" Then Exit Sub

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
#4
الله إيبارك فيك أخي الجوكر شرح واضح أخي وأنا معك نقطة بنقطة وسوف أخذ بالنصيحة بعين الإعتبار شكراً مجدداً أخي 
في إنتظار المزيد من شروحاتك فيما يخص المثال السابق ولاكن بطرق أخرى.
شكرا

إستفسار  بخصوص الكود التالي



For a As Integer = 0 To aa.Length - 1



لماذا نظيف 1-

ملحوضة / النتائج تتعطل ولا تضهر حتى يكتمل الشرط ومن تم تعرض النتائج داخل الليست

هل من تعديل لعرض النتائج مباشرة عند تنفيذ الكود قبل إنتهاء الشرط وعندها يتوقف عند تحقق الشرط لأن لاحضت بطئ للبرنامج أو بمعنى اخر تشنج .
الرد
تم الشكر بواسطة:
#5
الشكر لله والحمد لله
والحمد لله على كل حال

لى ولك وللجميع بامر الله
فى البداية بخصوص Length

فهى تعنى طول النص / القيمة أو باصح عدد الاحرف للمحتوى

فبطبيعة الحال عند اتمام عد عدد الاحرف هنا
كود :
abcdefghijklmnopqrstuvwxyz

بابسط ما يكون ستبداء برقم 1 ومن ثم تنتهى عن الرقم 26
وهذا طبيعي ولا نقاش فى الامر بهذا

لكن عند تنفيذ الامر وهو طباعة حرف حرف من خلال
كود :
aa(i)


فحرف الـ i هنا يبداء من العد 0 وليس 1
لان القرائة الخارجية لاى شي ينظر اليه يبداء من 1
ولاكن برمجياً عند بدء العد والتنفيذ فهو يبداء من 0
وبما ان اجمالى عدد الاحرف هى 26 وبما ان العد يبداء من 0 فيجب ان ينتهى عند 25

ليكون الاجمالى م 0 الى 25 هو 26 فلذلك يتم وضع -1 ليصبح الكود كعبارة عن التالى
كود :
For i As Integer = 0 To 26 - 1

ليكون الشكل هو
كود :
For i As Integer = 0 To 25

الجزء الاخير وهو تاخير تنفيذ الكود بسبب كثرة عملية تنفيذ الـ For
وكذلك يتم طباعة الامر بعد الانتهاء منه فهنا يرجع لطريقة تنفيذ الكود
هل تم تنفيذ الكود من خلال زر وخلاص دون اى امر 
او انه تم استغلال الكود ليتم تنفيذه من خلال BackgroundWorker وايضاً ProgressBar

حيث كل ما تحتاج اليه هو وضع الكود داخل حدث
PHP كود :
BackgroundWorker1.DoWork 

ومن ثم فى حدث
كود :
Button1.Click

تقوم بوضع هذا الكود
كود :
BackgroundWorker1.RunWorkerAsync()

ستجد ان المشروع بدون اى لاج ابداً مهما كان تاخير تنفيذ الكود
كذلك انه يعرض ما يتم تنفيذه لحظة بلحظة حتى الانتهاء

وياتى دور الاخير فى اختيارى استخدام ProgressBar
فقط لمعرفة ان الكود تم الانتهاء من تنفيذه ام لا فكما ذكرت انه اختياري

ولاتمام الامر بدون ProgressBar فكل ما عليك فقط تنفيذ ما تم شرحه بالاعلى
واذا كنت تريد اضافة رسالة فقط بدون استخدام ProgressBar تفيد بانه تم الانتهاء من تنفيذ الكود

أو تنفيذ اى كود بعد الانتهاء فقط يكتفي وضع اى  كود بحدث 
PHP كود :
BackgroundWorker1_RunWorkerCompleted 

واذا كنت تريد اتمام تفعيل ProgressBar لتعطي مظهر متكامل
لتنفيذ الكود فقط عليك باتمام الخطوات التالية

فى حدث BackgroundWorker1_DoWork طبق الكود التالى
كود :
       CheckForIllegalCrossThreadCalls = False
       Dim aa As String = "abcdefghijklmnopqrstuvwxyz"
       ProgressBar1.Minimum = 0
       ProgressBar1.Maximum = aa.Length
       For i As Integer = 0 To aa.Length - 1
           For ii As Integer = 0 To aa.Length - 1
               For iii As Integer = 0 To aa.Length - 1
                   ListBox1.Items.Add(aa(i) + aa(ii) + aa(iii))
                   'If (aa(i) + aa(ii) + aa(iii)).ToString = "aaz" Then Exit Sub
               Next
           Next
           BackgroundWorker1.ReportProgress(i + 1)
       Next

فى حدث BackgroundWorker1_ProgressChanged طبق الكود التالى
كود :
       ProgressBar1.Value = e.ProgressPercentage

فى اعدادات خيارات اداء BackgroundWorker1
تاتى على WorkerReportsProgress وتجعل القيمة True

ولعمل الامر تاتى فى حدث Button1_Click وتقوم بكتابة هذا الكود
كود :
       BackgroundWorker1.RunWorkerAsync()

وبكده ستجد الكود يعمل كما تشاء

لا تنسى التعديل على هذا السطر كبقاً لما تريد
كود :
                   'If (aa(i) + aa(ii) + aa(iii)).ToString = "aaz" Then Exit Sub

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
#6
شرح سلسل وبسيط و واضح  وهذا يدل على شخص متمكن في إيصال المعلومة للمتلقي فجزاك الله كل خير 

أخي واجهنى خطأ ولم أعرف سببه أرجو توضيحه لي



صورة الخطأ بالمرفقات


الملفات المرفقة
.rar   ScreenCapture_2019-4-20 13.50.16_1.rar (الحجم : 86.84 ك ب / التحميلات : 16)
الرد
تم الشكر بواسطة:
#7
لى ولك وللجميع بامر الله

بخصوص الخطاء
هل قمت باضافة اداء ListBox فى الفورم ام لا
واذا نعم يبدو ان الاسم مختلف عن اسم ListBox1

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
تم الشكر بواسطة: ابراهيم ايبو , حريف برمجة
#8
(20-04-19, 04:52 PM)elgokr كتب :
لى ولك وللجميع بامر الله

بخصوص الخطاء
هل قمت باضافة اداء ListBox فى الفورم ام لا
واذا نعم يبدو ان الاسم مختلف عن اسم ListBox1

تحياتى لك
وتمنياتى لك التوفيق

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


الملفات المرفقة
.rar   WindowsApplication11.rar (الحجم : 62.55 ك ب / التحميلات : 7)
الرد
تم الشكر بواسطة:
#9
Imports System.ComponentModel
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        BackgroundWorker1.RunWorkerAsync()

    End Sub

    Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        CheckForIllegalCrossThreadCalls = False
        Dim ic As String
        Dim aa As String = "abcdefghijklmnopqrstuvwxyz"
        ProgressBar1.Minimum = 0
        ProgressBar1.Maximum = aa.Length

        For i As Integer = 0 To aa.Length - 1
            For ii As Integer = 0 To aa.Length - 1
                For iii As Integer = 0 To aa.Length - 1
                    For iiii As Integer = 0 To aa.Length - 1
                        ic = (aa(i) + aa(ii) + aa(iii) + aa(iiii))
                        Label1.Text = ic
                        ListBox1.Items.Add(ic)
                        If (aa(i) + aa(ii) + aa(iii) + aa(iiii)).ToString = TextBox1.Text Then Exit Sub
                    Next
                Next
            Next
            BackgroundWorker1.ReportProgress(i + 1)
        Next
    End Sub

    Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
        ProgressBar1.Value = e.ProgressPercentage
    End Sub

  End Class


أخي ياريت توضيح لوظيفة الكود التالي لو سمحت

           BackgroundWorker1.ReportProgress(i + 1)
الرد
تم الشكر بواسطة:
#10
(20-04-19, 08:04 PM)sads كتب : لقد قمت بالتأكيد على إسم الأداة فوجدت أنها بنفس المسمى وللتأكيد أكثر نسخت إسم الأداة وأعدت تسميتها فظهر لي نفس الخطأ


بخصوص المرفق بهذا الرد فهو يعمل جيداً بدون اى مشكلة
يبدو ان الامر لديك فى الجهاز فقط قم باعادة تشغيل السورس او الجهاز
حتى يتم حل المشكلة لديك اذا كانت المشكلة قائمة حتى الان

(20-04-19, 09:27 PM)sads كتب :
أخي ياريت توضيح لوظيفة الكود التالي لو سمحت
           BackgroundWorker1.ReportProgress(i + 1)

بخصوص هذا السطر هو عبارة عن ارسال رقم مرحلة تنفيذ For
ممكن تقول عليه كالعداد زى اللى ممكن نقول عليه كمثال
عند تنفيذ كل مرحلة يقول رقم 1 تم رقم 2 تم حتى يصل الى اخر رقم فى For
وطبعاً For يبداء من العدد 0 وينتهى عند 25 بينما عدد الاحرف الذى يتعامل معها من 1 الى 26
فهنا عندما تكتب i فقط يعنى بعد الانتهاء من الخطوة الاولى سيقول المرحلة رقم 0 تم
وطبعاً 0 يعنى لم يبداء بعد لذلك حتى اجعله يبداء من رقم 1 فهنا انا بقول له كالتالى
0+1 = 1 تم
1+1 = 2 تم
فستجد انه يبداء من 1 وينتهى عند رقم 26 كما هو عدد الاحرف
ووظيفة هذا السطر فقط فى حالة تم استخدام ProgressBar

لانك ستجعل خصائص هذه الاداء الحد الادنا للرقم هو 0 والحد الاكبر للعدد بدلاً من 100
سيكون عدد الاحرف اى انه سيكون 26

فهنا فى كل مرة يقوم For بانه تم الانتهاء من رقم 1 يعنى ProgressBar اصبح يساوى 1
وعندما يصل الى 26 سيكون ProgressBar اصبح يساوى 26 وهو الحد الاكبر والذى يعنى 100%

والامر انه ازاي بياخد تلك القيمة ان 1 تم الى اخر رقم
فاذا تنظر بردى السابق ستجد هذا السطر
كود :
      ProgressBar1.Value = e.ProgressPercentage

راجع الشرح فى ردي السابق وستوضح الامر اكثر مع الشرح بهذا الرد

خصوصاً ان الكود يحتوى على الاسطر التالية
كود :
      ProgressBar1.Minimum = 0
      ProgressBar1.Maximum = aa.Length

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  انشاء wordlist تماما كاداة crunch فى توزيعة kali linux ali ahmed 1997 2 657 06-07-16, 11:49 PM
آخر رد: الوادي

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم