PDA

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 ها انتخواب کرده و همون شرط سه تا اختلاف رو روشون انجام بده.