السلام عليكم و رحمة الله و بركاته
اخوتي الكرام هل يوجد طريقة او بديل لاضافة العديد(اكثر من ثلاث) من العناصر الى سلسلة عامل التشغيل بالشرط if
على سياق : someString = someString If(someString="firstString","secondString","thirdString")
من المفروض ان السلسلة السابقة لا تقبل اكثر من ثلاث عناصر فهل يوجد طريقة ما او بديل لذلك او لتلك العملية
و لتوضيح الفكرة اكثر ارفق مثال بسيط ...ارجو افادتي ان امكن
PHP كود :
Public Class Form1 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 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 ياخذ قيمته او بالاحرى نصه من السلسلة فاما server8 او server7 او server10
ليس مقارنة بل و ان صح القول بمثابة توليفة ان وجد اسم السيرفر في القائمة يتم استكمال السطر التابع ل URL1=...... و منه يتم تشغيل الملف الصوتي المناط به
وان لم يوجد لا يشتغل
ملخص القول كيف يمكن اضافة عناصر اخرى لتلك السلسلة اي (سيرفر8,سيرفر7,سيرفر10,وهكذا)
ارجو انى قد اوصلت الفكرة من السؤال
هذا يعني إذا كان المتغير (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
هذا يعني إذا كان المتغير (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
ترتيب ارقام ال 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 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") Timer1.Start() AxWindowsMediaPlayer1.URL = URL1 End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles 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)