View Full Version : مقایسه ایتم های لیست باکس
  
goldpower
شنبه 03 تیر 1391, 14:50 عصر
با فرض اینکه ایتم های لیست باکس به صورت  [n]  باشد . چه طور می شه انها رو با هم مقایسه کرد ؟؟
عدد=n
just4froum
شنبه 03 تیر 1391, 15:00 عصر
میشه یه مثال بزنید یکم گنگه.
goldpower
شنبه 03 تیر 1391, 17:08 عصر
میشه یه مثال بزنید یکم گنگه.
http://axgig.com/images/41836994427078523608.jpg
می خوام این چند تا عدد رو با هم مقایسه کنم .
just4froum
شنبه 03 تیر 1391, 18:22 عصر
من دقیقا نفهمیدم منظورت از محاسبه چیه ولی مثلا در کد زیر اونایی که تکراری باشد حذف میشن. البته اول تبدیل میشن به عدد بعد مقایسه می شن. گفتم احتمالا این بیشتر بدردت میخوره.
Private Sub Command1_Click()
Dim arr() As String, m As String
Dim x As Long, y As Long
ReDim arr(1 To List1.ListCount)
For x = 1 To List1.ListCount
    arr(x) = List1.List(x - 1)
    
Next x
For x = 1 To List1.ListCount
    For y = 1 To List1.ListCount
    If x = y Then GoTo NextRow
    If arr(x) <> Empty And arr(y) <> Empty Then
        If CLng(Mid(arr(x), 2, Len(arr(x)) - 2)) = CLng(Mid(arr(y), 2, Len(arr(y)) - 2)) Then arr(y) = Empty
    End If
NextRow:
    Next y
Next x
List1.Clear
For x = 1 To UBound(arr)
    If arr(x) <> Empty Then List1.AddItem arr(x)
Next x
End Sub
Private Sub Form_Load()
List1.AddItem "[12]"
List1.AddItem "[13]"
List1.AddItem "[15]"
List1.AddItem "[22]"
List1.AddItem "[11]"
List1.AddItem "[13]"
List1.AddItem "[12]"
List1.AddItem "[22]"
End Sub
goldpower
شنبه 03 تیر 1391, 18:42 عصر
دوست عزیز شما تصویر زیرو در نظر بگیر :  
http://axgig.com/images/76819673975078853878.jpg
حالا فرض کن می خوای این اعداد با هم مقایسه کنی و فقط اونایی که با هم سه تا اختلاف دارن داخل لیست باکس بمونن و بقیه حذف بشوند.
just4froum
شنبه 03 تیر 1391, 19:01 عصر
بفرمایید اینم از نمونه کد:
Private Sub Command1_Click()
Dim x As Long, y As Long
Dim f() As String, s() As Long
ReDim f(1 To List1.ListCount)
ReDim s(1 To List1.ListCount)
For x = 1 To List1.ListCount
    f(x) = List1.List(x - 1)
    s(x) = CLng(f(x))
Next x
For x = 1 To List1.ListCount
    For y = 1 To List1.ListCount
    If x = y Then GoTo MissY
    
    If Abs(CLng(f(x)) - s(y)) = 3 Then GoTo NextNum
    
MissY:
    Next y
    f(x) = Empty
NextNum:
Next x
List1.Clear
For x = 1 To UBound(f)
    If f(x) <> Empty Then List1.AddItem f(x)
Next x
End Sub
Private Sub Form_Load()
List1.AddItem "12"
List1.AddItem "15"
List1.AddItem "18"
List1.AddItem "22"
List1.AddItem "17"
List1.AddItem "15"
List1.AddItem "3"
List1.AddItem "10"
End Sub
goldpower
شنبه 03 تیر 1391, 23:48 عصر
با توجه به شکل زیر :
http://axgig.com/images/38644799244851068659.jpg
دو تا لیست باکس داریم که تعداد ایتم هاشون برابرند.   موقعی که تعدادی از y ها برابر شدند بره به لیست باکس بعدی و متناظر با همون y ها از x ها انتخواب کرده و همون شرط سه تا اختلاف رو  روشون انجام بده.
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.