منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
ممكن ايضاح اكثر لـ continu for - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : ممكن ايضاح اكثر لـ continu for (/showthread.php?tid=55500)



ممكن ايضاح اكثر لـ continu for - justforit - 03-11-25

السلام عليكم ورحمة الله و بركاته
اذا لدين االشرط التالي:
كود :
If unods.Count < contents.Count Then Continue For
هل يعني انه يتخطى كل جسم for حتى لو يوجد جمل بعدها؟
كود :
for i = 0 to 100
if not then continu for
maybe yes maybe not
other things
other things

next



RE: ممكن ايضاح اكثر لـ continu for - أبو خالد الشكري - 04-11-25

أعتقد معناه أنه إذا تحقق الشرط ؛ فإنه سوف يتم إيقاف حلقة For
أما إذا لم يتحقق الشرط فإنه سيتم مواصلة حلقة For حتى النهاية ، وهي 100


RE: ممكن ايضاح اكثر لـ continu for - justforit - 04-11-25

(04-11-25, 01:26 AM)أبو خالد الشكري كتب : أعتقد معناه أنه إذا تحقق الشرط ؛ فإنه سوف يتم إيقاف حلقة For
أما إذا لم يتحقق الشرط فإنه سيتم مواصلة حلقة For حتى النهاية ، وهي 100

هذا يعني هذا الاشتراط خاطيء فلابد من استبداله بـ
كود :
for ***
if a=b then
anything
end if
other
other
next
بارك الله فيك وشكر لك.


RE: ممكن ايضاح اكثر لـ continu for - أبو خالد الشكري - 04-11-25

(04-11-25, 01:42 AM)justforit كتب : هذا يعني هذا الاشتراط خاطيء فلابد من استبداله بـ
كود :
for ***
if a=b then
anything
end if
other
other
next

مرحبا بك
قد تكون الطريقة الصحيحة في بناء الكود كما يلي (على سبيل المثال) :


كود :
Dim a, b
       For i = 0 To 100
           If a = b Then
               textbox1.text = "OK"
               Exit For
           Else
               TextBox1.Text = "No"
           End If
       Next



RE: ممكن ايضاح اكثر لـ continu for - Taha Okla - 04-11-25

السلام عليكم ورحمة الله وبركاته

(Continue For)  تعني تجاوز كل ما بعد هذا الكود و انتقل للدوران التالي ..
مثلا تريد أن تستخرج الأرقام الفردية من مجموعة أرقام مابين 1 إلى 10 فتكتب الكود :

PHP كود :
       For i 1 To 10
            If i Mod 2 
0 Then Continue For

 
           ListBox1.Items.Add(i)
 
       Next 

نفس الكود السابق فيك تكتبه بطريقة أخرى بدون الحاجة لاستخدامها :
PHP كود :
For 1 To 10
    If i Mod 2 
<> 0 Then
        ListBox1
.Items.Add(i)
 
   End If
Next 

لكن إن كان هناك أكثر من بلوك في الحلقة فيبدوا استخدام الـ (Continue For)  أكثر تنظيما من الحاجة لفتح وإغلاق عبارة (If --> End If)


RE: ممكن ايضاح اكثر لـ continu for - justforit - 04-11-25

حفظكم ا لله جميعا وبارك فيكم


RE: ممكن ايضاح اكثر لـ continu for - justforit - 05-11-25

سبحان الله عملت مثال مصغر لكي تتضح الاشكالية لكن لا ادري هل عرفت الحل ام لا
المثال مرفق اختبار رابط واحد وهو يخص عدد النودز في الصفحة و آخر مشاركة المشارك لا يساوي من قبله من حيث عنوان الوصول الى خاصية الـInnertext لاسمه.
فلا  ادري هل ستقع اخطاء ان انا نقلته الى المشروع الرئيسي
و من لا يود تحميل المثال البسيط التالي الكلاس كامل:
كود :
Imports System.Threading
Public Class Form1
   Dim th As Thread
   Dim doc As New HtmlAgilityPack.HtmlDocument
   Sub get_nods(url As String)
       Dim html As String = IO.File.ReadAllText(url)
       doc.LoadHtml(html)
       Dim posts As HtmlAgilityPack.HtmlNodeCollection = doc.DocumentNode.SelectNodes("//div[@class='post classic ']")
       Dim post As HtmlAgilityPack.HtmlNode = Nothing
       Dim userinfo As HtmlAgilityPack.HtmlNode = Nothing
       Dim attachs As HtmlAgilityPack.HtmlNodeCollection = Nothing
       Dim x As Integer
       ProgressBar1.Invoke(Sub() ProgressBar1.Maximum = posts.Count - 1)
       For x = 0 To posts.Count - 1
           Label1.Invoke(Sub() Label1.Text = "")
           Label2.Invoke(Sub() Label2.Text = "")
           Label3.Invoke(Sub() Label3.Text = "")
           ProgressBar1.Invoke(Sub() ProgressBar1.Value = x)
           userinfo = posts(x).SelectNodes("//div[@class='author_information']")(x)
           post = posts(x).SelectNodes("//div[@class='post_body scaleimages']")(x)
           If Not IsNothing(posts(x).SelectNodes("//fieldset//a[@class='attachembed']")) Then
               attachs = posts(x).SelectNodes("//fieldset//a[@class='attachembed']")
           End If
           Label1.Invoke(Sub() Label1.Text = "Main_Post: " & vbNewLine & userinfo.InnerText)
           Label2.Invoke(Sub() Label2.Text = "Main_Post: " & vbNewLine & post.InnerText)
           If Not IsNothing(attachs) Then
               Label3.Invoke(Sub() Label3.Text = "Main_Post: " & vbNewLine & "Attachs Count: " & attachs.Count)
           Else
               Label3.Invoke(Sub() Label3.Text = "Main_Post: " & vbNewLine & "Attachs Count: 0")
           End If
           Thread.Sleep(2500)
       Next
       Button1.Invoke(Sub() Button1.Enabled = True)
   End Sub
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim url As String = "E:/vb4arb/thread-10000.html"
       th = New Thread(AddressOf get_nods)
       Button1.Enabled = False
       Label1.Text = "بدأ"
       th.Start(url)
   End Sub
End Class
الكود الاول اللذي استخدمه للوصول لاسم العضو او المستخدم:
كود :
"//div[@class='post_author scaleimages']//div[2]//a"
فهل الكود الجديد في هذه المشاركة هو الافضل ام لا؟
على كل حال ساجرب باذن الله 
 انا احتاج وقت طويل لكي اعرف الخطأ.
اسف على الاطالة
حفظكم الله تعالى