مشكلة حيرتنى فى شروط if المشروع مرفق - الماجيك مسعد - 12-07-17
السلام عليكم
يارب تكونو بخير جميعا
واجهت مشكلة غريبة
واتمنى يكون الخطأ منى لكى اعرف تصحيحه
هحاول ابسط المشكلة بقدر الامكان
عندى 2 ليست فيو
وعامل حلقة دوران على الليست الاولى
بحيث انها تبحث عن نفس الاسم فى الليست التانية
ولو وجدت الاسم تنفذ امرا ما
وام لم تجد الاسم تنفذ امر اخر
واعتقد الجميع سوف يفهم اكتر عند قراءة الكود
اولا كود البحث
كود :
Private Function FindItem(ItemList As ListView.ListViewItemCollection, ColumnIndex As Integer, SearchString As String)
For Each Item As ListViewItem In ItemList
If Item.SubItems(ColumnIndex).Text = SearchString Then
Return Item.Index
End If
Next
Return False
End Function
ثانيا كود حلقة الدوران
كود :
For Each itm As ListViewItem In listView1.Items
If Not String.IsNullOrEmpty(itm.SubItems(1).Text) Then
Dim z As Integer = FindItem(ListView2.Items, 0, itm.SubItems(1).Text)
If IsNumeric(z) Then
itm.SubItems(5).Text = "No"
'If z = False Then
' GoTo nonumber
'End If
If z < ListView2.Items.Count - 1 Then
itm.SubItems(3).Text = ListView2.Items(z).SubItems(0).Text
itm.SubItems(4).Text = ListView2.Items(z).SubItems(1).Text
End If
If itm.SubItems(1).Text = "MG-CONTROL.exe" Then
If itm.SubItems(2).Text = ListView2.Items(z).SubItems(1).Text Then
itm.SubItems(3).Text = ListView2.Items(z).SubItems(0).Text
itm.SubItems(4).Text = ListView2.Items(z).SubItems(1).Text
itm.SubItems(5).Text = "No"
ElseIf Not itm.SubItems(2).Text = ListView2.Items(z).SubItems(1).Text Then
itm.SubItems(5).Text = "Yes"
itm.BackColor = Color.DarkSlateBlue
itm.ForeColor = Color.DarkRed
End If
End If
Else
nonumber: itm.SubItems(3).Text = ""
itm.SubItems(4).Text = ""
itm.SubItems(5).Text = "Yes"
itm.BackColor = Color.DarkSlateBlue
itm.ForeColor = Color.DarkRed
End If
End If
Next
ثالثا المشروع
http://www.elmagek.net/up/do.php?id=410
RE: مشكلة حيرتنى فى شروط if المشروع مرفق - الماجيك مسعد - 13-07-17
هل الموضوع صعب؟
RE: مشكلة حيرتنى فى شروط if المشروع مرفق - الماجيك مسعد - 13-07-17
هل من مساعد؟
RE: مشكلة حيرتنى فى شروط if المشروع مرفق - ابو ليلى - 14-07-17
ما حاجتك في هذه
اعد قيمة منطقية True بدلاً عنها
ولا انصحك باستخدام GoTo ستعاني من مشاكل معها
يمكنك تحويل Items الى (List(Of listViewItem و بالتالي الاستفادة من دعم Ling في هذا المجال
امثلة للاستخدام
PHP كود :
Private Function FindItem(ItemList As ListView, ColumnIndex As Integer, SearchString As String)
Dim query = ItemList.Items.Cast(Of ListViewItem)().Where(Function(item) item.SubItems(ColumnIndex).Text = SearchString) For Each Itm In query 'Do Any Thing Next
Dim query2 As IEnumerable(Of ListViewItem) = ItemList.Items.Cast(Of ListViewItem)() Dim Found = From itm In query2 Where itm.SubItems(ColumnIndex).Text = SearchString Select itm
'تعيد قيمة واحدة 'سترمي استثناء في حال لم تجد شيئ او وجدت اكثر من قيمة Dim query3 = ItemList.Items.Cast(Of ListViewItem)().Single(Function(item) item.SubItems(ColumnIndex).Text = SearchString) 'تعيد اول قيمة Dim query4 = ItemList.Items.Cast(Of ListViewItem)().First(Function(item) item.SubItems(ColumnIndex).Text = SearchString)
End Function
المشروع مرفق ؟؟
RE: مشكلة حيرتنى فى شروط if المشروع مرفق - الماجيك مسعد - 14-07-17
(14-07-17, 12:40 AM)ابو ليلى كتب : ما حاجتك في هذه
اعد قيمة منطقية True بدلاً عنها
ولا انصحك باستخدام GoTo ستعاني من مشاكل معها
يمكنك تحويل Items الى (List(Of listViewItem و بالتالي الاستفادة من دعم Ling في هذا المجال
امثلة للاستخدام
PHP كود :
Private Function FindItem(ItemList As ListView, ColumnIndex As Integer, SearchString As String)
Dim query = ItemList.Items.Cast(Of ListViewItem)().Where(Function(item) item.SubItems(ColumnIndex).Text = SearchString) For Each Itm In query 'Do Any Thing Next
Dim query2 As IEnumerable(Of ListViewItem) = ItemList.Items.Cast(Of ListViewItem)() Dim Found = From itm In query2 Where itm.SubItems(ColumnIndex).Text = SearchString Select itm
'تعيد قيمة واحدة 'سترمي استثناء في حال لم تجد شيئ او وجدت اكثر من قيمة Dim query3 = ItemList.Items.Cast(Of ListViewItem)().Single(Function(item) item.SubItems(ColumnIndex).Text = SearchString) 'تعيد اول قيمة Dim query4 = ItemList.Items.Cast(Of ListViewItem)().First(Function(item) item.SubItems(ColumnIndex).Text = SearchString)
End Function
المشروع مرفق ؟؟
اشكرك ابو ليلى لمرورك الطيب الى الموضوع
انا بحاجة للاندكس فقط
يعنى ابحث عن القيمة ولو موجودة يجبلى رقم الاندكس بتاعها لانى بستخدمه فى اشياء اخرى
كود البحث ليس به مشكلة ولكن المشكلة فى شروط if
ثالثا المشروع
http://www.elmagek.net/up/do.php?id=410
حمل المشروع وجرب تشغل الفورم هتلاقى ان شرط if
فيه مشكلة
مثال بسيط للمشكلة
نفترض انى عرفت شئ ما
dim x = 0
الان الشرط
if not x = 0 then
x = 5
else if x = 0 then
x = 55
end if
فى الشرط دا المفروض يدينى اكس = 55 صح؟
هذا ما نعرفه جميعا
ولكن فى مشروعى
سيعطينى اكس = 5 وليس 55
وهذه هى مشكلتى
وعندما تجرب انت المشروع ستجد هذه المشكلة
لتحميل المشروع
http://www.elmagek.net/up/do.php?id=410
لم اكن انوى استخداlم go to
ولم اكن سافعل كل هذه الشروط فى الكود
كان فقط شرطين
ولكن غلب امرى فاخدت اجرب كل الطرق
ولم اصل لشئ
6 ساعات متواصلة ولم افهم السبب
لذا لجئت هنا ربما احد منكم يفهمنى
واتمنى ان اكون على خطأ فى شئ ما
RE: مشكلة حيرتنى فى شروط if المشروع مرفق - ابو ليلى - 14-07-17
جرب بهذه الطريقة
كود البحث
PHP كود :
Private Function FindItem(ItemList As ListView.ListViewItemCollection, ColumnIndex As Integer, SearchString As String) As Dictionary(Of Integer, Boolean) For Each Item As ListViewItem In ItemList If Item.SubItems(ColumnIndex).Text = SearchString Then Return New Dictionary(Of Integer, Boolean) From {{Item.Index, True}} End If Next Return New Dictionary(Of Integer, Boolean) From {{0, False}} End Function
حلقة الدوران مع الشرط
PHP كود :
For Each itm As ListViewItem In listView1.Items If Not String.IsNullOrEmpty(itm.SubItems(1).Text) Then Dim Found As Dictionary(Of Integer, Boolean) = FindItem(ListView2.Items, 0, itm.SubItems(1).Text) If Found.ContainsValue(True) Then itm.SubItems(5).Text = "No" 'رقم الاندكس تحصل عليه هنا 'Found.Keys.ElementAt(0) Else itm.SubItems(3).Text = "" itm.SubItems(4).Text = "" itm.SubItems(5).Text = "Yes" itm.BackColor = Color.DarkSlateBlue itm.ForeColor = Color.DarkRed End If End If Next
RE: مشكلة حيرتنى فى شروط if المشروع مرفق - الماجيك مسعد - 15-07-17
حاضر يا غالى هجرب وارد عليك
بس بردو انا معرفتش ليه فى كود الشرط لم ينفذ بالطريقة الصحيحة؟
RE: مشكلة حيرتنى فى شروط if المشروع مرفق - ابو ليلى - 16-07-17
السلام عليكم و رحمة الله و بركاته
هو انت لو تتبعت الكود سطر سطر اثناء التنفيذ ستلاحظ انه لا يعيد قيمة False
لننظر للكود
اولاً
PHP كود :
Dim z As Integer=FindItem(ListView2.Items, 0, itm.SubItems(1).Text)
ثم استدعيت التالي
هل تتوقع مثلاً ان النوع Integer ليس رقماً لتضع الشرط السابق ؟؟؟
بعد ذلك
هل Integer = False ???
بعد ذلك تريد من الدالة اعادة نوعين (مرة قيمة رقمية و مرة قيمة منطقية) , لحل مثل هذه الاشكالية لديك العديد من الطرق
اولها كما في الكود السابق , اذ اعدت مصفوفة بنوع و قيمة .
او ان تستعمل اعادة نوع مجهول و عند الاستدعاء تجري عملية التحويل للنوع الذي تريده
بالتطبيق على الكود السابق
PHP كود :
Public Shared Function FindItem2(Of T)(ItemList As ListView.ListViewItemCollection, ColumnIndex As Integer, SearchString As String) As T
For Each Item As ListViewItem In ItemList Dim converter = TypeDescriptor.GetConverter(GetType(T)) If converter.CanConvertFrom(GetType(String)) Then
If Item.SubItems(ColumnIndex).Text = SearchString Then Dim value As String = Item.Index Return DirectCast(converter.ConvertFromString(value), T)
End If Else Return Nothing End If Next
End Function
و الحلقة تصبح
PHP كود :
If Not String.IsNullOrEmpty(itm.SubItems(1).Text) Then Dim z As String = FindItem2(Of String)(ListView2.Items, 0, itm.SubItems(1).Text) If IsNumeric(z) Then itm.SubItems(5).Text = "No" ' MsgBox(z) Else itm.SubItems(3).Text = "" itm.SubItems(4).Text = "" itm.SubItems(5).Text = "Yes" itm.BackColor = Color.DarkSlateBlue itm.ForeColor = Color.DarkRed End If End If Next
هذه المقالة تسلط الضوء على التقنية - مفهوم Generics بشكل مبسطمفهوم Generics بشكل مبسط
كما و يوجد طرق اخرى و افكار للوصول الى حل مشابه.
تحياتي.
انصحك باستخدام الاسلوب الحديث في التعامل مع الملفات على السيرفرت و المواقع عبر مكتبة HttpClient
و استخدام اسلوب عدم التزامن لتتلافى مشاكل التجميد لدى الاستدعاء
PHP كود :
Private Async Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click .... .... Dim text2 As String Using text22 As New Http.HttpClient() text2 = Await text22.GetStringAsync("https://goo.gl/iHJyWe") End Using
.... ....
End Sub
RE: مشكلة حيرتنى فى شروط if المشروع مرفق - الماجيك مسعد - 16-07-17
ياسلام عليك
والله انت استاذ
دا افضل شئ
وكمان انت فهمتنى حاجات مكنتش تخطر فى بالى خالص
ايضا سوف ابحث عن HttpClient
لكى افهمها اكتر لانى لم اسمع عنها من قبل
تسلم ايدك بجد
ربنا يجعله فى ميزان حسناتك
واجهتنى مشكلة اخرى كما بالصورة
تظهر فقط عندما تكون عناصر ليست 2
اقل من ليست 1
يريت تفدنى بالسبب والحل
وجزاك الله كل خير
(16-07-17, 01:56 AM)ابو ليلى كتب : السلام عليكم و رحمة الله و بركاته
هو انت لو تتبعت الكود سطر سطر اثناء التنفيذ ستلاحظ انه لا يعيد قيمة False
لننظر للكود
اولاً
PHP كود :
Dim z As Integer=FindItem(ListView2.Items, 0, itm.SubItems(1).Text)
ثم استدعيت التالي
هل تتوقع مثلاً ان النوع Integer ليس رقماً لتضع الشرط السابق ؟؟؟
بعد ذلك
هل Integer = False ???
بعد ذلك تريد من الدالة اعادة نوعين (مرة قيمة رقمية و مرة قيمة منطقية) , لحل مثل هذه الاشكالية لديك العديد من الطرق
اولها كما في الكود السابق , اذ اعدت مصفوفة بنوع و قيمة .
او ان تستعمل اعادة نوع مجهول و عند الاستدعاء تجري عملية التحويل للنوع الذي تريده
بالتطبيق على الكود السابق
PHP كود :
Public Shared Function FindItem2(Of T)(ItemList As ListView.ListViewItemCollection, ColumnIndex As Integer, SearchString As String) As T
For Each Item As ListViewItem In ItemList Dim converter = TypeDescriptor.GetConverter(GetType(T)) If converter.CanConvertFrom(GetType(String)) Then
If Item.SubItems(ColumnIndex).Text = SearchString Then Dim value As String = Item.Index Return DirectCast(converter.ConvertFromString(value), T)
End If Else Return Nothing End If Next
End Function
و الحلقة تصبح
PHP كود :
If Not String.IsNullOrEmpty(itm.SubItems(1).Text) Then Dim z As String = FindItem2(Of String)(ListView2.Items, 0, itm.SubItems(1).Text) If IsNumeric(z) Then itm.SubItems(5).Text = "No" ' MsgBox(z) Else itm.SubItems(3).Text = "" itm.SubItems(4).Text = "" itm.SubItems(5).Text = "Yes" itm.BackColor = Color.DarkSlateBlue itm.ForeColor = Color.DarkRed End If End If Next
هذه المقالة تسلط الضوء على التقنية - مفهوم Generics بشكل مبسطمفهوم Generics بشكل مبسط
كما و يوجد طرق اخرى و افكار للوصول الى حل مشابه.
تحياتي.
انصحك باستخدام الاسلوب الحديث في التعامل مع الملفات على السيرفرت و المواقع عبر مكتبة HttpClient
و استخدام اسلوب عدم التزامن لتتلافى مشاكل التجميد لدى الاستدعاء
PHP كود :
Private Async Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click .... .... Dim text2 As String Using text22 As New Http.HttpClient() text2 = Await text22.GetStringAsync("https://goo.gl/iHJyWe") End Using
.... ....
End Sub
RE: مشكلة حيرتنى فى شروط if المشروع مرفق - ابو ليلى - 16-07-17
خلي الشرط كده
PHP كود :
If Not String.IsNullOrEmpty(text3) And num <= flist.Count - 1
|