منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيفية اضافة اكثر من ثلاث معاملات الى عامل التشغيل بواسطة If
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم و رحمة الله و بركاته
اخوتي الكرام هل يوجد طريقة او بديل لاضافة العديد(اكثر من ثلاث) من العناصر الى سلسلة عامل التشغيل بالشرط if
على سياق :  someString = someString If(someString="firstString","secondString","thirdString")
من المفروض ان السلسلة السابقة لا تقبل اكثر من ثلاث عناصر فهل يوجد طريقة ما او بديل لذلك او لتلك العملية
و لتوضيح الفكرة اكثر ارفق مثال بسيط ...ارجو افادتي ان امكن
PHP كود :
Public Class Form1
    Dim serveurnumber 
As String ""
 
   Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click
        Dim URL 
As String "https://server13.mp3quran.net/basit_mjwd/002.mp3"
 
       Dim URL1 As String URL.Replace("server13"serveurnumber).Replace("basit_mjwd""minsh")
 
       serveurnumber = If(serveurnumber "server8""server7""server10")
 
       AxWindowsMediaPlayer1.URL URL1
    End Sub
End 
Class 
وعليكم السلام ورحمة الله وبركاته
الجملة الشرطية المذكورة في سؤالك، أظن أنك فهمتها خطأ،، 
فطريقة استخدامها غير منطقية ..

على كل هي تعني : إذا تحقق الشرط(Condition) قم بتنفيذ (True)، وإذا لم يتحقق الشرط : نفذ (False) وهي تأخذ الشكل التالي :
كود :
Result = If(Condition, True, False)
ولا يمكن أن تأخذ أكثر من احتمالين، إما الشرط متحقق أو لا ..

وهي نفسها جملة الشرط التالية :
كود :
If Condition Then
   Result = True
Else
   Result = False
End If







في الكود عندك :
كود :
Dim serveurnumber As String = ""

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
   Dim URL As String = "https://server13.mp3quran.net/basit_mjwd/002.mp3"
   Dim URL1 As String = URL.Replace("server13", serveurnumber).Replace("basit_mjwd", "minsh")
   serveurnumber = If(serveurnumber = "server8", "server7", "server10")

   AxWindowsMediaPlayer1.URL = URL1


End Sub

تطلب استبدال ("server13") بـ (serveurnumber)  والتي تساوي  لا شيء ("")

ثم تضع جملة المقارنة اذا (serveurnumber) = ("server8")

أصلاً هي فارغة، فعلي أي أساس تطلب المقارنة ؟؟!!
(15-02-23, 01:21 PM)Taha Okla كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته
الجملة الشرطية المذكورة في سؤالك، أظن أنك فهمتها خطأ،، 
فطريقة استخدامها غير منطقية ..

على كل هي تعني : إذا تحقق الشرط(Condition) قم بتنفيذ (True)، وإذا لم يتحقق الشرط : نفذ (False) وهي تأخذ الشكل التالي :
كود :
Result = If(Condition, True, False)
ولا يمكن أن تأخذ أكثر من احتمالين، إما الشرط متحقق أو لا ..

وهي نفسها جملة الشرط التالية :
كود :
If Condition Then
   Result = True
Else
   Result = False
End If







في الكود عندك :
كود :
Dim serveurnumber As String = ""

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
   Dim URL As String = "https://server13.mp3quran.net/basit_mjwd/002.mp3"
   Dim URL1 As String = URL.Replace("server13", serveurnumber).Replace("basit_mjwd", "minsh")
   serveurnumber = If(serveurnumber = "server8", "server7", "server10")

   AxWindowsMediaPlayer1.URL = URL1


End Sub

تطلب استبدال ("server13") بـ (serveurnumber)  والتي تساوي  لا شيء ("")

ثم تضع جملة المقارنة اذا (serveurnumber) = ("server8")

أصلاً هي فارغة، فعلي أي أساس تطلب المقارنة ؟؟!!
شكرا على الرد
دعني افسر هذا السطر و الذي هو صلب السؤال

كود :
serveurnumber = If(serveurnumber = "server8", "server7", "server10")

ال serveurnumber  ياخذ قيمته  او بالاحرى نصه من  السلسلة فاما server8   او server7 او server10
ليس مقارنة بل و ان صح القول بمثابة توليفة ان وجد اسم السيرفر في القائمة يتم استكمال السطر التابع ل URL1=...... و منه يتم تشغيل الملف الصوتي المناط به
وان لم يوجد لا يشتغل
ملخص القول كيف يمكن اضافة عناصر اخرى لتلك السلسلة اي (سيرفر8,سيرفر7,سيرفر10,وهكذا)
ارجو انى قد اوصلت الفكرة من السؤال
توضيح (تصحيح مفهوم ) لهذا الكود :
كود :
serveurnumber = If(serveurnumber = "server8", "server7", "server10")

هذا يعني إذا كان المتغير  (serveurnumber) يساوي السيرفر ("server8")  قم يايتبداله بـ ("server7")  وإذا كان لا يساويه استبدله بـ ("server10")
فالعمليةو ليست تتالي أو تحقق من شغل السيرفر فيشغل عليه وإن لم يجد فيشغل على الذي يليه ..

ثم أنك وضعت هذا السطر بعد أن قمت بإفراغ المتغير (serveurnumber ) من قيمته من خلال الكود :
كود :
Dim serveurnumber As String = ""

بالتالي فإنه دوماً سيختار النتيجة  ("server10")
ومع ذلك هو لا فأئدة منه، لأنك بعد استخدام قيمته لم تستخدم هذه القيمة 
فالمتغير الذي استخدمته لتشغيل المشغل به قمت بتعبئة قيمته قبل الاستبدال أصلاً ولا يتعلق بالمتغير ولم يعد يتعلق بالقيمة الجديدة له ..

بالتالي يكون مع التوضيح :
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
   ' تعرف متغير وتعبئته برابط
   Dim URL As String = "https://server13.mp3quran.net/basit_mjwd/002.mp3"
   ' تعريف متغير وتبئته بالرابط السابق بعد أن تم استبدال جزء منه بجزء آخر وتفريغ جزء آخر وهو السيرفر
   Dim URL1 As String = URL.Replace("server13", serveurnumber).Replace("basit_mjwd", "minsh")
   'استبدال اسم السيرفر ولكن المتغير فارغ بالتالي سيختار حالة عدم التحقق أي السيرفر9
   serveurnumber = If(serveurnumber = "server8", "server7", "server10")
   'تشغيل المشغل بالرابط  والذي قيمتهي هي
   ' "https://.mp3quran.net/minsh/002.mp3"
   AxWindowsMediaPlayer1.URL = URL1


End Sub
(15-02-23, 07:15 PM)Taha Okla كتب : [ -> ]توضيح (تصحيح مفهوم ) لهذا الكود :
كود :
serveurnumber = If(serveurnumber = "server8", "server7", "server10")

هذا يعني إذا كان المتغير  (serveurnumber) يساوي السيرفر ("server8")  قم يايتبداله بـ ("server7")  وإذا كان لا يساويه استبدله بـ ("server10")
فالعمليةو ليست تتالي أو تحقق من شغل السيرفر فيشغل عليه وإن لم يجد فيشغل على الذي يليه ..

ثم أنك وضعت هذا السطر بعد أن قمت بإفراغ المتغير (serveurnumber ) من قيمته من خلال الكود :
كود :
Dim serveurnumber As String = ""

بالتالي فإنه دوماً سيختار النتيجة  ("server10")
ومع ذلك هو لا فأئدة منه، لأنك بعد استخدام قيمته لم تستخدم هذه القيمة 
فالمتغير الذي استخدمته لتشغيل المشغل به قمت بتعبئة قيمته قبل الاستبدال أصلاً ولا يتعلق بالمتغير ولم يعد يتعلق بالقيمة الجديدة له ..

بالتالي يكون مع التوضيح :
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
   ' تعرف متغير وتعبئته برابط
   Dim URL As String = "https://server13.mp3quran.net/basit_mjwd/002.mp3"
   ' تعريف متغير وتبئته بالرابط السابق بعد أن تم استبدال جزء منه بجزء آخر وتفريغ جزء آخر وهو السيرفر
   Dim URL1 As String = URL.Replace("server13", serveurnumber).Replace("basit_mjwd", "minsh")
   'استبدال اسم السيرفر ولكن المتغير فارغ بالتالي سيختار حالة عدم التحقق أي السيرفر9
   serveurnumber = If(serveurnumber = "server8", "server7", "server10")
   'تشغيل المشغل بالرابط  والذي قيمتهي هي
   ' "https://.mp3quran.net/minsh/002.mp3"
   AxWindowsMediaPlayer1.URL = URL1


End Sub
الاشكال هو كيفية اضافة عناصر اخرى لهذا السطر
كود :
serveurnumber = If(serveurnumber = "server8", "server7", "server10")
ليصبح مثلا كالتالي
كود :
serveurnumber = If(serveurnumber = "server8", "server7", "server10", "server12",server13,server11)
ترتيب ارقام ال server ليس مهم المهم هنا اضافة اكثر من ثلاث عناصر لتلك المجموعة
اما serveurnumber=""  لتعريف المتغير النصي بذاك الاسم فلو جذف لظهرت احطاء بالكود
أكثر شيء ممكن أفيدك فيه هو :

هذا الكود لا يعني اذا ما حصل السيرفر الأول شغال بيجرب الثاني، واذا ما حصل الثاني بيجرب الثالث وهكذا .

هذا جملة شرطية نتيجتها تنفيذ واحد فقط سواء السيرفر شغال ولا مو شغال..
اكيد كلكم يعرف يمكننا صياغة كود يلبي المطلوب .
(18-02-23, 10:34 PM)سعود كتب : [ -> ]اكيد كلكم يعرف يمكننا صياغة كود يلبي المطلوب .
هذا مثال لاحد الحلول الممكنة
PHP كود :
Public Class Form1
    Dim 
list As New List(Of String)({"server8""server7""server10""server12""server13""server11"})
 
   Dim serveurnumber As String ""
 
   Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click
        Dim URL 
As String "https://server13.mp3quran.net/basit_mjwd/002.mp3"
 
       Dim URL1 As String URL.Replace("server13"serveurnumber).Replace("basit_mjwd""minsh")
 
       Timer1.Start()
 
       AxWindowsMediaPlayer1.URL URL1
    End Sub

    Private Sub Timer1_Tick
(sender As ObjectAs EventArgsHandles Timer1.Tick
        Static idx 
As Integer 0
        If idx 
< list.Count 1 Then
            idx 
+= 1
            serveurnumber 
= list(idx)
 
       Else
            idx 
0
        End 
If
 
       If Timer1.Enabled True And AxWindowsMediaPlayer1.playState WMPLib.WMPPlayState.wmppsReady Then
            Button1
.PerformClick()
 
       ElseIf Timer1.Enabled True And AxWindowsMediaPlayer1.playState WMPLib.WMPPlayState.wmppsPlaying Then
            Timer1
.Stop()
 
       End If
 
   End Sub
End 
Class 
كما يمكن وكحل آخر استعمال راندوم بواسطة مؤقت الاخذ عنصر واحد من السلسلة النصية (list)